我有ListView,我想在单击它时更改项目的背景,以显示它已被选中。但当我使用这个代码(在文本下)时,它每改变13个项目的背景色。示例:如果我选择1个项目并向下滚动,它将更改每个13个项目的颜色(1-13-26..)。我只想改变一个项目的背景。
lvpl.setOnItemClickListener( new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView tv = (TextView) view
tv.setBackgroundColor(Color.argb(125,75,236,90));
final_ids.add(ids.get(position));
}
});
最佳答案
问题是,您的adapter for list正在重用移出屏幕的视图。
解决方案是在适配器中为其他视图设置默认颜色
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) convertView.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
= inflater.inflate(
R.layout.your_list_item, null);
}
if(postion!=SelectedPosition)
{
convertView.setBackgroundColor(default Color);
}
else
{
convertView.setBackgroundColor(Color.argb(125,75,236,90));
}
return convertView;
}
关于android - Android:ListVIew:更改背景onClick,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18102932/