listview点击,更换此行的图片,实现已读未读

今天在群里有人问,点击listview中的一行时,更换此行的图片,实现已读未读

大概实现原理就是,为listview增加OnItemClickListener的监听

得到选中的行,将数据集中此行对应的图片标识换了,再listview更新

附上代码段吧.

main.xml

中就只增加了一个listview的控件

listitem.xml中包含一个ImageView,与一个TextView

//变量
List<Map<String, Object>> data = null;
ListView lv = null;
SimpleAdapter sd = null;

 

onCreate 中的代码

 

lv = (ListView) findViewById(R.id.listView1);
data = new ArrayList<Map<String, Object>>();
for (int i = 0; i < 10; i++) {
	Map<String, Object> map = new HashMap<String, Object>();
	map.put("img", R.drawable.ic_launcher);
	map.put("title", "ZF" + i);
	data.add(map);
}
sd = new SimpleAdapter(MainActivity.this, data,
	R.layout.listitem, new String[] { "img", "title" }, 
	new int[] {R.id.imageView1, R.id.textView1 });
lv.setAdapter(sd);
//增加监听
lv.setOnItemClickListener(new OnItemClickListener() {
	@Override
	public void onItemClick(AdapterView<?> arg0, View arg1,
		int position, long arg3) {
		Map<String, Object> mp = data.get(position);
		if(mp.containsKey("img")){
			mp.remove("img");
			mp.put("img", R.drawable.icon);
		}
		data.remove(position);//清除此行对应数据集中的数据
		data.add(position, mp);//增加修改后的数据行
		sd.notifyDataSetChanged();//更新
	}
});

 完工..

 

为什么要更新数据集,而不直接更换此行的图片?

因为直接更换此行图片后,listview滚动后,图片将重新还原.

 

直接更新图片的方法(listview滚动后,图片将重新还原)纯YY一下

取得点击行View,再得到此行的ImageView,重新设置图片资源

View v = (View) lv.getChildAt(position);
ImageView iv = (ImageView) v.findViewById(R.id.imageView1);
iv.setImageResource(R.drawable.icon);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值