0

我正在使用列表视图的适配器进行编程,并且我希望它在用户触摸列表视图元素时保持突出显示。我成功使用了下面的代码。但是由于 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));

     };
});
4

5 回答 5

0

您是否尝试过扩展 BaseAdapter 并在列表视图元素上使用选择器作为背景?关于 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/

希望能帮助到你

于 2013-05-27T08:27:10.133 回答
0

在 Activity 中使用 list<> 或 array[] 来记录应该突出显示的项目,并在 getview() 中设置项目突出显示。

于 2013-05-27T08:35:45.167 回答
0

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

于 2013-05-27T08:44:25.030 回答
0

在您的 Adapter 方法类中设置您的背景资源getView()。正如Pawel Cala所说的那样,为该视图使用选择器。

于 2013-05-27T08:46:21.390 回答
0

也许,您应该记录哪些项目应该被高估。由于转换视图,请记住清除。

于 2013-05-27T08:47:04.763 回答