作者bengohard (我的歌声里)
看板AndroidDev
标题[问题] ListView如何动态改变item的属性
时间Wed Oct 22 11:49:06 2014
问题:我有一个ListView,我想做到按一个Button後,把此ListView里某item的属性改变,
请问该怎麽做(不使用onItemClick)? 此ListView使用了一个SimpleAdapter.
我试过以下的方法无效,虽然取的到属性值,但无法改变属性值,为何?
View view = Adapter.getView(0, ListView.getChildAt(0), ListView);
ImageView img = (ImageView)view.findViewById(R.id.ID_Image);
int vis = img.getVisibility(); //值正确
img.setVisibility(View.INVISIBLE); //改变此值但无作用
Adapter.notifyDataSetChanged();
//再抓一次值结果还是原本的值 >"<
View view = Adapter.getView(0, ListView.getChildAt(0), ListView);
ImageView img = (ImageView)view.findViewById(R.id.ID_Image);
int v = img.getVisibility();
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.146.47.46
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1413949751.A.2CC.html
1F:→ nobody1: 值在dataset里 Adapter.notifyDataSetChanged 就变回去 10/22 12:26
2F:→ bengohard: 懂你的意思,但如果是view存在哪里呢?要怎麽变更属性? 10/22 14:00
3F:推 givemepass: 建议改用baseadapter, 另外你要控制的是data而不是vie 10/22 14:52
4F:→ givemepass: w 10/22 14:52
※ 编辑: bengohard (122.146.47.46), 10/22/2014 15:23:13
5F:→ bengohard: 请教楼上,我要改的是view的属性,为什麽是控制data@@? 10/22 15:24
6F:推 givemepass: 因为由data更改资料来影响view, 而不是直接改变view才 10/22 17:04
7F:→ givemepass: 是比较好的做法, 晚上回家写个饭粒给你 10/22 17:04
8F:→ nobody1: view是把值呈现出来的容器 当值有所变化时绑定的物件也 10/22 17:20
9F:→ nobody1: 会随之调整 你要多了解一下语言特性 才回过硕来看程式 10/22 17:21
10F:推 JULONE780701: 因为你最後又下了一次Adapter.notifyDataSetChanged 10/22 19:43
11F:→ JULONE780701: 就变回原样了啊 10/22 19:43