我正在使用此代码
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);
}
});
Run Code Online (Sandbox Code Playgroud)
但是如果很多项目,如果我选择一个项目并开始向下翻,我看到它被选中,其他项目大约每5个.如果所有项目都放在屏幕上(不需要滚动),一切都OK.
你能解释一下如何解决它吗?我尝试了很多选择.
您可以跟踪当前所选元素的位置:
OnItemClickListener listViewOnItemClick = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View arg1, int position, long id) {
mSelectedItem = position;
mAdapter.notifyDataSetChanged();
}
};
Run Code Online (Sandbox Code Playgroud)
并覆盖适配器的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;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
556 次 |
最近记录: |