ListView突出显示问题

时间:2013-05-27 08:21:33

标签: android

我正在使用适配器进行编程以进行列表视图,我希望它能够在用户触摸列表视图元素时保持突出显示。我成功使用了以下代码。但由于android回收布局以获得流畅的性能,当我点击第1行时,行11,21,31等也会突出显示。然后,如果我向下滚动,则不再选择第1行,而是突出显示第4,14,24行。这是我用的代码

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getActivity(), R.layout.row, collection);            
onelist.setAdapter(arrayAdapter);
onelist.setOnItemClickListener(new OnItemClickListener() 
{
    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position, long id)
    {
        str1 = (String)onelist.getItemAtPosition(position);
        str1 = str1.toLowerCase();
        Toast.makeText(context, str1 + " clicked in Fragment " + fragmentNo, Toast.LENGTH_LONG).show();

        if(lastColored != null)
        {
            lastColored.setBackgroundColor(Color.TRANSPARENT);
            lastColored.invalidate();
        }
        lastColored = v;
        v.setBackgroundColor(Color.rgb(51, 181, 229));

     };
});

5 个答案:

答案 0 :(得分:0)

您是否尝试过扩展BaseAdapter并在listview元素上使用选择器作为背景? 关于BaseAdapter的教程:http://theopentutorials.com/tutorials/android/listview/android-custom-listview-with-image-and-text-using-baseadapter/
关于选择器的一些内容:http://www.mkyong.com/android/android-imagebutton-selector-example/

希望有所帮助

答案 1 :(得分:0)

如何使用列表&lt;&gt;或者在活动中使用array []记录哪个项目应该突出显示,并在getview()中设置项目高亮显示。

答案 2 :(得分:0)

您可以将list用于具有属性android:state_activated的ListView行。我最近几天前创建了一个演示示例。您可以download并从我的github查看。

答案 3 :(得分:0)

在适配器类getView()方法中设置Background资源。由于Pawel Cala告诉使用Selector进行该视图。

答案 4 :(得分:0)

也许,您应该记录哪些项目应该是高级的。并记得因转换视图而清除。