holder.voteUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final int position = myList.getPositionForView((View) v
.getParent());
final ListItem li = values.get(position);
li.voteUp_value = true;
//In getView(), I set different image to holder.voteUp ImageView depending on this value.
//Hence I call notifyDataSetChanged(); which takes care of it.
notifyDataSetChanged();
}
});
但问题是,由于通知整个清单,每次投票都会闪烁。
我无法直接更改holder.voteUp
的图片,因为还有一个holder.voteDown
也必须更改,具体取决于li.voteUp_value
。所以,我和notifyDataSetChanged();
一起去处理这一切。
有没有办法可以从父视图中获取视图并设置图像,而不是notifyDataSetChanged();
?
像:
ViewParent vp = v.getParent();
ImageView im = vp.findViewById(R.id.voteUp);
im.setImageResource.....
但findViewById
ViewParent
答案 0 :(得分:0)
您应该能够使用onClick()
侦听器传递给您的视图。只是更改图像应该足以让它重绘,但如果没有,你仍然可以手动告诉它。
@Override
public void onClick(View v) {
final int position = myList.getPositionForView((View) v
.getParent());
final ListItem li = values.get(position);
li.voteUp_value = true;
ImageView im = vp.findViewById(R.id.voteUp);
if ( im != null ) {
//Update the view here
}
}