我的ListView每一行都放了一个button,一个屏幕可以显示出五行记录,令我头疼的是,我点击了第一个item的button,经常会出现第四个item的按钮被点击了,而不是我希望的第一个,有的时候这两个按钮都被点击了(而我确确实实只点击了一下)。
这种奇怪的现象不是每次都能出现的,再补充一下,每一个item都有图片,我启动了线程下载图片,下载完毕通知handler去notifyDataSetChanged,有可能和这个有关系。
哪位大侠也遇到过这样的问题,知道怎么解决的请指教,thanks!
这种奇怪的现象不是每次都能出现的,再补充一下,每一个item都有图片,我启动了线程下载图片,下载完毕通知handler去notifyDataSetChanged,有可能和这个有关系。
哪位大侠也遇到过这样的问题,知道怎么解决的请指教,thanks!
解决方案 »
- 给“墙”跪了!跪了!跪了!跪了!(求ADT plugin)
- Android中如何获得listview中checkbox的状态?
- 用webview写了个简单的浏览器(暂时这么叫吧),地址栏网址一定要输全,就是要加http,怎么弄不加http也能解析啊
- 写入sd卡遇到问题
- 请教如何用android画图
- 在做手机微博,在做个人中心的时候出错了
- 新手求教:为什么编译过程中自动生成一个main.out.xml文件
- 【安卓求助】demo例子移植到新项目一直报错。
- 内存被自动释放了
- 安卓timer.cancel();问题!!
- 在SD卡上创建文件失败,求解啊!!!
- 我有一个需求,想了很久,没有想到解决的方案,希望有高手指点迷津,详述如下
假如你的所有button实例化都是用xml里的同1个buuton和id创建的,那就最好自己去动态加载button,以便set不同的id,或者自己去继承button。
关于listview
响应点击ListView item中的button事件。
楼主给xml文件的控件加个id属性。或者按照楼上说的,在载入过程中迭代每个item项中的button实例,在手动调用setId()的方法来完成动态加载
button.setFocusable(false);
if(null == convertView) {
inflate...
viewholder...findview
convertView.setTag(viewholder);
} else {
viewholder = convertView.getTag();
}
viewholder.button.setOnClickListener()..;//设置listener要在if语句的括号外!不要放在里面,放在里面就可能出现点击位置不确定的情况请尝试,goodluck!
1、不采用 notifyDataSetChanged 方法
2、在原有通知数据集改变处,换做主动重新设置adapter,并主动刷新当前view即可。
解決辦法意想不到的簡單,對於每一個item你處理高亮的條件不僅要對
符合條件的設置,對不符合條件安的item也要進行設置,因為binView存在复用的問題,debug狀態下
是不會出現的,每個item在新出現的時候,調用bindView。
對於2個同時出現選中狀態:
只要重新喚醒下數據有更新就好了:
mAdapter.notifyDataSetChanged();
final CheckBoxViewHolder holder;
View v=convertView;
final AppInfo appUnit=dataList.get(position);
if(v==null)
{
holder = new CheckBoxViewHolder();
v=this.mInflater.inflate(R.layout.app_row, null);
holder.mTextView=(TextView)v.findViewById(R.id.appName);
holder.mImageView=(ImageView)v.findViewById(R.id.icon);
holder.mCheckBox=(CheckBox)v.findViewById(R.id.cb);
v.setTag(holder);
}
else{
holder = (CheckBoxViewHolder) v.getTag();
}
holder.mTextView.setText(appUnit.appName);;
holder.mImageView.setImageDrawable(appUnit.appIcon);
holder.mCheckBox.setChecked(isSelected.get(position));
return v;
}