作者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