可拖曳的多选listView
来源:互联网 发布:sql网络接口error 26 编辑:程序博客网 时间:2024/04/30 06:30
纪录一下做这个功能的小知识,由于都是通过别人博客学习使用的,所以直接上链接,看完下面两篇文章大家就肯定会用了
ListView的多选模式
可拖拽listview基本使用技巧(DragSortListView)
下面是我根据这两篇文章和我们的设计需求做的一些改变的小结
在listview布局文件中设置了 android:choiceMode=”multipleChoice”
由于我们的要求是有选中按钮的,所以在listview的itemview中使用了CheckedTextView,有选中图标,也可添加文字
<CheckedTextView android:id="@+id/editport_item_check" android:checkMark="?android:attr/listChoiceIndicatorMultiple" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:gravity="center_vertical" android:layout_centerVertical="true" android:paddingLeft="8dp" />
在listview的adpter中设置了自定义的图片
holder.check.setCheckMarkDrawable(R.drawable.checkedview);
其中checkedview是自定义的selector,这样就可以改变选中和未选中的图片了
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:drawable="@drawable/edit_choosed"/> <item android:drawable="@drawable/edit_choose"/> </selector>
上面的代码虽然可以显示了选择框的样子,但是点击时却不能选中,在DragSortListView的demo中有一个可以多选的例子,对比并验证了一下,发现需要将CheckedTextView放到实现了Checkable接口的布局中才能够被选中。
package com.mulity.list;import android.content.Context;import android.util.AttributeSet;import android.widget.Checkable;import android.widget.RelativeLayout;public class CheckableRelativeLayout extends RelativeLayout implements Checkable { private static final int CHECKABLE_CHILD_INDEX = 0;//设置可以选中包含的第一个控件,所有在布局中CheckedTextView需要为它的第一个孩子 private Checkable child; public CheckableRelativeLayout(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onFinishInflate() { super.onFinishInflate(); child = (Checkable) getChildAt(CHECKABLE_CHILD_INDEX); } @Override public boolean isChecked() { return child.isChecked(); } @Override public void setChecked(boolean checked) { child.setChecked(checked); } @Override public void toggle() { child.toggle(); }}
现在已经完成了界面的多选功能,我使用的场景是当选中多个后点击删除按钮就将选中的项从listview中移除,因为在activity中不能获得选中的集合,所以需要循环依次判断
//获取选中位置 data = adapter.getDatas(); if(null == deleteList){ deleteList=new ArrayList<CapitalSymbol>(); } if(null != data){ int num= data.size(); for(int i=0;i<num;i++){ if(mListView.isItemChecked(i)){//如果被选中 deleteList.add(data.get(i)); System.out.println("delete---->"+data.get(i).getSymbol()); } } } //删除 deleteNum=deleteList.size(); if(deleteNum>0){ //从显示列表中移除 for(int i=0;i<deleteNum;i++){ data.remove(deleteList.get(i)); } mListView.clearChoices();//清除所有的选中状态 adapter.updateAdapterDatas(data); }else{ ToastUtils.showShort(this,R.drawable.toast_symbol_warn,"请选择要删除的项"); }
这样我的可爱的多选可拖拽listview就完整啦
0 0
- 可拖曳的多选listView
- 一款非常不错的可拖曳空间
- 可拖曳Tkinter.Listbox实现
- 可扩展的listview
- 可拖动的listview
- 可扩展的listview
- ubuntu屏幕截图工具:scrot,可截鼠标拖曳的矩形区域图形
- ubuntu屏幕截图工具:scrot,可截鼠标拖曳的矩形区域图形
- ubuntu屏幕截图工具:scrot,可截鼠标拖曳的矩形区域图形
- ubuntu屏幕截图工具:scrot,可截鼠标拖曳的矩形区域图形
- ubuntu屏幕截图工具:scrot,可截鼠标拖曳的矩形区域图形
- ubuntu屏幕截图工具:scrot,可截鼠标拖曳的矩形区域图形
- ubuntu屏幕截图工具:scrot,可截鼠标拖曳的矩形区域图形
- ubuntu屏幕截图工具:scrot,可截鼠标拖曳的矩形区域图形
- JTree的拖曳
- grid的行拖曳
- 控件的拖曳
- delphi中ListView拖曳效果实现
- 自学Swift-斯坦福笔记整理(六)
- 用PowerShell隐藏磁盘驱动器
- 法规和共和国和方法
- 自己写自己调的第一个工具类:ResultSet转List
- Python函数非匹配参数类型传递
- 可拖曳的多选listView
- LintCode 合并两个排序链表
- OS中的P,V原语有哪些应用?
- POJ 1458 && HDU 1159 Common Subsequence(LCS)
- css积累
- MySql语句大全:创建、授权、查询、修改等
- 【TYVJ】1062 合并傻子
- 欢迎使用CSDN-markdown编辑器
- Xcode中的快捷键使用