作者Griffith (就只是個宅宅 ╮( ̄▽ ̄")
看板AndroidDev
標題[問題] SimpleAdapter 與 checkbox的小問題~
時間Sat Jan 18 17:54:15 2014
各位先進您好,目前嚐試練習to do list的實作,根
據以往小弟的的撰寫喜歡,所以在寫ListView時我喜
歡採用SimpleAdapter來實作,但以前再練習時,都是
練習設計使用者離開程式時才順便將checkbox的狀態
給儲存起來,所以比較沒有即時性的問題,但這次我想
要當使用者按下checkbox時,商品的名稱就會被畫掉,
但會發現,沒有很辦法即時地將線畫出來(一定要等使
用者按到item click的觸發getview後才能改變),以下
是我getview的程式碼:
@Override
public View getView(final int position, View convertView, ViewGroup
parent) {
View view = super.getView(position, convertView, parent);
//****** LayoutView find View By Id ******************
ImageView iv_todolist_typ =
(ImageView)view.findViewById(R.id.iv_todolist_type);
final TextView tv_todolist_itemname = (TextView)
view.findViewById(R.id.tv_todolist_itemname);
final CheckBox cb_todolist_check = (CheckBox)
view.findViewById(R.id.cb_todolist_check);
iv_todolist_typ.setImageDrawable(adapterContext.getResources().getDrawable(R.drawable.todo_image));
//-----------
cb_todolist_check.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
// TODO Auto-generated method stub
if(isChecked){
tv_todolist_itemname.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
todoitem_check.set(position, ITEMCHEKED);
}else{
tv_todolist_itemname.getPaint().setFlags(Paint.ANTI_ALIAS_FLAG); ;
todoitem_check.set(position, ITEMUNCHEKED);
}
}
});
return view;
}
不知是否可以請各位先進提供一些方向呢?
是否有辦法在checkbox的listener下呼叫refresh或notifyDataSetChanged呢?
還有一個小問題就是,這個listview我有保留OnItemClickListener的功能
而當我使check box的狀態變為勾選的狀態時假設如下:
1. buy ■
2. apple □
3. XDDDD □
此時我隨便按一下個item,都會有短暫的時間,會使得
第一列的checkbox 勾選狀態消失,而第三列的checkbox 變成勾選 O_Q"
約過1秒左右就會回復正常。
奇怪的是…我是使用Sony ARC S 2.3.4版測試、也嚐試用模擬器的2.3.3版測
試都會有一樣的問題,但!!!!!!我換到4.3版就不會有這種情況
所以想請問各位先進這兩個問題,希望各位大哥能給我一點方向,謝謝。m(_ _)m
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 42.67.158.89
1F:推 givemepass:感覺是殘值的問題 參考看看#1Gw-rwOm 01/19 15:19
2F:→ givemepass:SimpleAdapter 怎麼會有getView? 那個不是baseadapter 01/19 15:21
3F:→ givemepass:才有的方法? 01/19 15:21
※ 編輯: Griffith 來自: 210.240.38.36 (01/19 15:48)
4F:→ Griffith:感謝樓上的大大提供的建議;原來這叫作殘值效應阿~~~每次 01/19 15:49
5F:→ Griffith:遇到類似的問題都會去強制改寫顯示畫面的function~~Orz 01/19 15:50
6F:→ Griffith:但這次,我如give大所提供的參考,做一樣的改寫仍會有此 01/19 15:51
7F:→ Griffith:現象產生,所以最後想到,其實checkbox就是imageview和 01/19 15:51
8F:→ Griffith:textview的組合,所以我把checkbox替換掉,用imageview來 01/19 15:52
9F:→ Griffith:實現(同樣改寫的方法用於checkbox,不work),但用在image 01/19 15:53
10F:→ Griffith:view上,就完全的正常了Orz~~而且…如原內容所說的,我同 01/19 15:54
11F:→ Griffith:樣的code在android 4.3版上就完全正常,所以…有先進可以 01/19 15:54
12F:→ Griffith:告訴小弟我為啥嗎OQ"(雖然解決了,但bug原理不明)~至於即 01/19 15:55
13F:→ Griffith:時更新的部分,我使用handler與activity溝通來實作(但不 01/19 15:56
14F:→ Griffith:知道,這樣是否是ok的方法) 01/19 15:56
15F:→ Griffith:感謝give大,對了~simpleAdapter有getView阿 @@"~~ 01/19 15:56
16F:推 givemepass:一般SimpleAdapter是可以直接用的 你該不會extends 01/19 16:02
17F:→ givemepass:SimpleAdapter吧? 這樣不如直接extends BaseAdapter 01/19 16:05