[問題] ListView如何動態改變item的屬性

作者: bengohard (我的歌聲裡)   2014-10-22 11:49:06
問題:我有一個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();
作者: nobody1 (無事家中坐)   2014-10-22 12:26:00
值在dataset裡 Adapter.notifyDataSetChanged 就變回去
作者: bengohard (我的歌聲裡)   2014-10-22 14:00:00
懂你的意思,但如果是view存在哪裡呢?要怎麼變更屬性?
作者: givemepass (λ)   2014-10-22 14:52:00
建議改用baseadapter, 另外你要控制的是data而不是view
作者: bengohard (我的歌聲裡)   2014-10-22 15:24:00
請教樓上,我要改的是view的屬性,為什麼是控制data@@?
作者: givemepass (λ)   2014-10-22 17:04:00
因為由data更改資料來影響view, 而不是直接改變view才是比較好的做法, 晚上回家寫個飯粒給你
作者: nobody1 (無事家中坐)   2014-10-22 17:20:00
view是把值呈現出來的容器 當值有所變化時綁定的物件也會隨之調整 你要多了解一下語言特性 才回過碩來看程式
作者: JULONE780701 (亞)   2014-10-22 19:43:00
因為你最後又下了一次Adapter.notifyDataSetChanged就變回原樣了啊

Links booklink

Contact Us: admin [ a t ] ucptt.com