单击子视图时如何更改列表项数据

时间:2013-09-20 06:43:50

标签: android listadapter

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

1 个答案:

答案 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
    }
}