listview点击,更换此行的图片,实现已读未读
程序员文章站
2022-07-12 13:16:13
...
今天在群里有人问,点击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);
上一篇: Toolbar的消息未读小红点实现