创建一个大小长度固定的dialog,当动态显示数据时,如果显示的数据太多,会出现同时选中多行的情况。
环境:自定义一个类,dialog中使用listview,不做分页处理,一次性全部显示出来。
点击事件代码如下:
GuestInfoListAdapter guestinfoAdapter = new GuestInfoListAdapter(guestInfoList); guestInfoListInfo.setAdapter(guestinfoAdapter); guestInfoListInfo.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub selectHaccnt = guestInfoList.get(arg2).getNo(); arg1.setBackgroundColor(Color.BLUE); if(oldView != null && old_position != arg2){ oldView.setBackgroundColor(Color.TRANSPARENT); } old_position = arg2; oldView = arg1; } });
注:old_position(Integer)和oldview(View)是全局变量
|
产用上面的方式来实现点击哪一行,哪一行变成蓝色。 但是如果是数据量比较大,滑动查看有两页以上。
那么点击任意一行,都会同时选中多行。
原因是:采用上面的方式,当点击了该行后,没有刷新整个adapter,导致后面的虚页也同时显示为选中状态。
解决方法:通过adapter来控制背景的变化,把点选中的行号传递给adapter,adapter的getView方法中做背景变更操作。
Dialog中:
final GuestInfoListAdapter guestinfoAdapter = new GuestInfoListAdapter(guestInfoList); guestInfoListInfo.setAdapter(guestinfoAdapter); guestInfoListInfo.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub selectHaccnt = guestInfoList.get(arg2).getNo(); guestinfoAdapter.setSelectedIndex(arg2); guestinfoAdapter.notifyDataSetInvalidated(); } });
Adapter中:
先添加一个私有变量int型,书写其set方法。
private int selectedIndex = -1; public GuestInfoListAdapter(List<Guest> guestInfoList){ this.guestInfoList = guestInfoList; }
public void setSelectedIndex(int selectedIndex) { this.selectedIndex = selectedIndex; }
getView方法中,做背景变更:
if (position == selectedIndex){ guestInfoListView.setBackgroundColor(Color.BLUE); }else { guestInfoListView.setBackgroundColor(Color.TRANSPARENT); }
|
分享到:
相关推荐
andriod ListView条目点击变色demo
ListView 实现单选/多选的demo例子,欢迎指正
ListView嵌套ListView,checkbox全选,多选,父item全选后,下面的子item全部选中
ListView多选单选模式
android多选ListView示例
listview实现checkbox多选效果,可动态加载数据,完美融合。
Qml 中的listview 默认不提供多选 Ctrl + A 全选, Shift +点击 范围选择, Ctrl+ 点击 多选 ,这个资源中实现了这几种选择,除了框选。
android listview 列表点击时改变点击颜色效果,本人抽空开发,亲测,有需要的可以下载
实现ListView条目点击多选,按钮对item的全选,反选,全不选
listview+checkbox 多选
listview多选,个人认为关键在于准确记录选中或者没选中item的位置,这里我是用HashMap来存储选中或者没选中相关的状态
完美解决ListView单选和多选的问题
ListView快速显示100万条数据用时1秒 最精简单代码演示快速显示
listview +checkbox 实现单选、多选操作
android中listview里添加多选功能的demo
多选listview实现 初学者看看不错的
VB实现Listview全癣取消全癣多选功能,弹出提示式多选功能,用ListView将读取到的本地磁盘列表显示在内,然后在每行数据的前边增加一个选择框,用户通过这个复选框可实现对Listview内容的单癣多选功能,我觉得这是个...
listview item子控件删除跳转,点击更改背景色
每个listview的每条item中都有多个checkbox,在项目中需要用到,所以写了个小demo,可以判断每个item中哪些checkbox被选中了。
可以多选批量删除的item的ListView,实现勾选的隐藏和显示