我有一个按照 ViewHolder 模式由数组适配器填充的列表视图。当有人单击按钮时,每一行都相当复杂,我想增加该行中显示的计数并更新该行中的文本字符串。
到目前为止,我已经正确填充了所有内容,但是当我单击一个单元格上的按钮时,它也会更改下一行的值(如果已创建)。
我已经尝试过notifyDataSetChanged()
,但这会重新填充整个列表,这对我的情况并不理想。
因为我onClick()
在数组适配器中定义我的方法,所以我有一个 RowHolder 类,它保存行v
以及填充MainListItem
列表项的该行的项。
class RowHolder{
View v;
MainListItem i;
RowHolder(View v, MainListItem i){
this.v = v;
this.i=i;
}
}
这是按钮的片段,onClick()
其中 h 是持有人
h.loveButton.setBackgroundColor(Color.parseColor(rowHolder.i.brandLoveColor));
h.loveButton.setImageResource(R.drawable.lovewhite);
((ImageView)rowHolder.v.findViewById(R.id.lovebutton)).setImageResource(R.drawable.lovewhite);
rowHolder.v.findViewById(R.id.lovebutton).setBackgroundColor(Color.parseColor(rowHolder.i.brandLoveColor));
String newLovers = getLoverString(rowHolder.i,rowHolder);
h.lovers.setText(newLovers);
((TextView)rowHolder.v.findViewById(R.id.lovers)).setText(newLovers);
rowHolder.i.loverString = newLovers;
rowHolder.i.loved = true;
int tmp = rowHolder.i.loves
tmp = tmp + 1;
((TextView)rowHolder.v.findViewById(R.id.lovecount)).setText(String.valueOf(tmp));
h.lovecount.setText(String.valueOf(tmp));
rowHolder.i.loves = tmp;
单击按钮时,我会更改提供列表视图的数据中的值以及持有视图的持有者中的数据以及实际视图中显示的数据。
这个实现工作得很好,除了当我改变实际视图中的值时,它最终会改变所有可见行的值。
如果有人可以帮助我找出更好的方法来实现这一点,那就太好了。