我正在使用适配器进行编程以进行列表视图,我希望它能够在用户触摸列表视图元素时保持突出显示。我成功使用了以下代码。但由于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));
};
});
答案 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)
也许,您应该记录哪些项目应该是高级的。并记得因转换视图而清除。