我在CustomAdapter中更改rowView的背景颜色,当我向下滚动列表并备份视图得到刷新并且背景消失时,我知道这是因为listView回收机制但我不能让它停下来。
这是我的getView功能:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final Holder holder = new Holder();
final View rowView;
rowView = inflater.inflate(R.layout.program_list, null);
holder.tv = (TextView) rowView.findViewById(R.id.textView1);
holder.img = (ImageView) rowView.findViewById(R.id.imageView1);
holder.tv.setText(result[position]);
holder.img.setImageResource(imageId[position]);
rowView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (position != 0)
rowView.setBackgroundColor(Color.rgb(70, 190, 200));
}
});
return rowView;
}
我想要做的是:在已经按下的所有位置存储在数组中,然后每次都为每个人着色。我看到了很多其他解决方案,但我并不完全理解它们。
答案 0 :(得分:1)
我认为你应该使用不同的方法并存储你点击的项目的位置。然后,当您创建视图时,检查位置是否已存储并更改背景。 希望它能帮到你
答案 1 :(得分:0)
改为创建一个布尔数组,并为您单击的每个项设置true。
boolean[] isSelected;
然后在你的getView方法代码中就像这样。
rowView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (position != 0){
rowView.setBackgroundColor(Color.rgb(70, 190, 200));
isselected[position] = true; }
}
});
if(isSelected[position]){
rowView.setBackgroundColor(Color.rgb(70, 190, 200));
}