我正在使用此代码
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parentView, View view, int position, long id) {
selectid = position;
for (int j = 0; j < parentView.getChildCount(); j++)
parentView.getChildAt(j).setBackgroundResource(R.color.listitem_normal);
// change the background color of the selected element
view.setBackgroundResource(R.color.listitem_pressed);
}
});
但是如果很多项目,如果我选择一个项目并开始向下翻转,我会看到它被选中,其他项目大约每5个。如果所有项目都放在屏幕上(无需滚动),一切都OK。
你能解释一下如何解决它吗?我尝试了很多选择。
答案 0 :(得分:7)
您可以跟踪当前所选元素的位置:
OnItemClickListener listViewOnItemClick = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View arg1, int position, long id) {
mSelectedItem = position;
mAdapter.notifyDataSetChanged();
}
};
并覆盖适配器的getView方法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final View view = View.inflate(context, R.layout.item_list, null);
if (position == mSelectedItem) {
// set your color
}
return view;
}