[問題] SimpleAdapter 與 checkbox (已解決)

看板AndroidDev作者 (就只是個宅宅 ╮( ̄▽ ̄")時間12年前 (2014/01/18 17:54), 編輯推噓2(2015)
留言17則, 2人參與, 最新討論串1/1
各位先進您好,目前嚐試練習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

01/19 15:19, , 1F
感覺是殘值的問題 參考看看#1Gw-rwOm
01/19 15:19, 1F

01/19 15:21, , 2F
SimpleAdapter 怎麼會有getView? 那個不是baseadapter
01/19 15:21, 2F

01/19 15:21, , 3F
才有的方法?
01/19 15:21, 3F
※ 編輯: Griffith 來自: 210.240.38.36 (01/19 15:48)

01/19 15:49, , 4F
感謝樓上的大大提供的建議;原來這叫作殘值效應阿~~~每次
01/19 15:49, 4F

01/19 15:50, , 5F
遇到類似的問題都會去強制改寫顯示畫面的function~~Orz
01/19 15:50, 5F

01/19 15:51, , 6F
但這次,我如give大所提供的參考,做一樣的改寫仍會有此
01/19 15:51, 6F

01/19 15:51, , 7F
現象產生,所以最後想到,其實checkbox就是imageview和
01/19 15:51, 7F

01/19 15:52, , 8F
textview的組合,所以我把checkbox替換掉,用imageview來
01/19 15:52, 8F

01/19 15:53, , 9F
實現(同樣改寫的方法用於checkbox,不work),但用在image
01/19 15:53, 9F

01/19 15:54, , 10F
view上,就完全的正常了Orz~~而且…如原內容所說的,我同
01/19 15:54, 10F

01/19 15:54, , 11F
樣的code在android 4.3版上就完全正常,所以…有先進可以
01/19 15:54, 11F

01/19 15:55, , 12F
告訴小弟我為啥嗎OQ"(雖然解決了,但bug原理不明)~至於即
01/19 15:55, 12F

01/19 15:56, , 13F
時更新的部分,我使用handler與activity溝通來實作(但不
01/19 15:56, 13F

01/19 15:56, , 14F
知道,這樣是否是ok的方法)
01/19 15:56, 14F

01/19 15:56, , 15F
感謝give大,對了~simpleAdapter有getView阿 @@"~~
01/19 15:56, 15F

01/19 16:02, , 16F
一般SimpleAdapter是可以直接用的 你該不會extends
01/19 16:02, 16F

01/19 16:05, , 17F
SimpleAdapter吧? 這樣不如直接extends BaseAdapter
01/19 16:05, 17F
文章代碼(AID): #1IsazCPJ (AndroidDev)