点击imageView 更换成另外一张图片
需求很简单,在listview中 先给item的imageview设置了一张图片A,设置点击事件在onclick方法中更换成另一一张图片B,但是点击后没有效果,打印log看到已经调用了该方法。holder.bus_icon.setImageResource(R.drawable.bus_blue);--------------------编程问答-------------------- 高手在哪里啊 --------------------编程问答-------------------- 你的这个holder.bus_icon.是什么?
holder.bus_icon.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.i("i", "点击图标了+test11" + position);
holder.bus_icon.setImageResource(R.drawable.bus_red);
adapter.notifyDataSetChanged();
}
});
一般不都是onItemClickListenter么
然后通过switch(position)来判断点击事件啊。
水平不高,没看明白你的代码。。 --------------------编程问答-------------------- holder.bus_icon 就是一个imageview, 这个图标是在listview中的,所以用了viewHolder类来优化 --------------------编程问答-------------------- 你的onClick事件监听到了,但问题是你onClick事件的逻辑处理。 adapter.notifyDataSetChanged();
ListView会重写调用getView显示每个Item。 所以显示依旧为R.drawable.bus_blue。如果想要更新,建议添加一个字段进行判断到底显示哪个图片。 --------------------编程问答-------------------- 你不应该调用 adapter.notifyDataSetChanged(),然后再看看。 --------------------编程问答-------------------- adapter.notifyDataSetChanged();
这个导致ListView重新刷新了,所以图片还是原来的图片,没变 --------------------编程问答--------------------
// 图标不刷新adapter也不行,又换了种方式感觉没什么问题啊 --------------------编程问答-------------------- 以上代码是在adapter 的getview方法中写的 --------------------编程问答-------------------- 自己研究搞定啦 --------------------编程问答-------------------- 移除adapter.notifyDataSetChanged(),调用holder.bus_icon.invalidate();
if (isblue) {
bus_icon.setImageResource(R.drawable.bus_blue);
} else {
Log.i("i", "变色了" + isblue);
bus_icon.setImageResource(R.drawable.bus_red);
}
bus_icon.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.i("i", "点击图标了+test11");
isblue = false;
adapter.notifyDataSetChanged();
}
});
或者
@Override--------------------编程问答-------------------- 除
public void onClick(View v) {
Log.i("i", "点击图标了+test11" + position);
ImageView iv = (ImageView)v;
iv.setImageResource(R.drawable.bus_red);
}
补充:移动开发 , Android