博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
可编辑选择、删除条目的ListView
阅读量:6690 次
发布时间:2019-06-25

本文共 5091 字,大约阅读时间需要 16 分钟。

  

今天,我是第一次在51写作,写一篇技术文章,是我自己在Android开发中总结提炼出的一个自定义控件,下面主要对其功能及其使用做简单介绍。

   首先,我们来看一下效果演示图:

EditListView.gif

  接下来,我们讲解一下控件功能及其使用:

1.功能

封装列表控件,使其条目具有可编辑选择、删除等功能。

2.Android Studio使用方法

dependencies{      compile 'com.wkp:EditListView:1.0.2'      //Android Studio3.0+可用以下方式      //implementation 'com.wkp:EditListView:1.0.2'}

3.使用详解

属性讲解

布局示例

代码示例

/** * kotlin用法 */ @RequiresApi(Build.VERSION_CODES.KITKAT)class MainActivity : AppCompatActivity() {    private val data = arrayListOf
("托儿索", "儿童劫", "小学僧", "橡皮妮", "喜之螂", "提款姬", "鱼尾雯", "鸡毛信", "娃娃鱼", "过家嘉", "尿不狮", "沙琪马", "阿童木", "大嘴猴", "香港皎") private var mListView: EditListView? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) mListView = findViewById
(R.id.lv) val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, android.R.id.text1, data) //设置适配器 mListView!!.adapter = adapter //设置是否测量高度(解决ScrollView冲突)// mListView!!.setMeasureHeight(true) //长按监听 mListView!!.setOnItemLongClickListener({ parent, view, position, id -> //开启编辑状态 mListView!!.isEditState = true //设置长按条目选中状态 mListView!!.setItemChecked(position, true) //返回false会导致OnItemClickListener调用,使以上的选中状态消失 true }) //设置所有条目选中/未选中监听(每次条目状态改变都会回调) mListView!!.setOnAllItemCheckedListener { checked -> Log.d("MainActivity", "checked:" + checked) } } //删除按钮 fun delete(view: View) { //删除所有已选中条目(adapter的源数据为数组时不支持转换) mListView!!.deleteAllCheckedItem(data) }// 编辑按钮 fun edit(view: View) {// 开启编辑状态 mListView!!.isEditState = true }// 退出编辑按钮 fun exitEdit(view: View) {// 关闭编辑状态 mListView!!.isEditState = false }// 全选按钮 fun selectAll(view: View) {// 全选 mListView!!.setAllItemChecked() //是否全选 Log.d("MainActivity","isAllItemChecked:" + mListView!!.isAllItemChecked) }// 全不选按钮 fun selectNone(view: View) {// 全不选 mListView!!.setAllItemUnchecked() //是否全不选 Log.d("MainActivity","isAllItemUnchecked:" + mListView!!.isAllItemUnchecked) }}/** * Created by user on 2017/11/6. * java用法 */@RequiresApi(api = Build.VERSION_CODES.KITKAT)public class TestActivity extends AppCompatActivity { private String[] mStrings = {"托儿索", "儿童劫", "小学僧", "橡皮妮", "喜之螂", "提款姬", "鱼尾雯", "鸡毛信", "娃娃鱼", "过家嘉", "尿不狮", "沙琪马", "阿童木", "大嘴猴", "香港皎","脑残片","卖卖卖","333","干干干"}; private List
data = new ArrayList<>(); private EditListView mListView; { data.addAll(Arrays.asList(mStrings)); } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = findViewById(R.id.lv); //设置编辑/退出编辑动画时长 mListView.setAnimDuration(400); //设置适配器 mListView.setAdapter(new ArrayAdapter
(this,R.layout.item_lv,R.id.item_tv,data)); //条目长按监听 mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView
parent, View view, int position, long id) { //开启编辑状态 mListView.setEditState(true); //设置长按条目选中状态 mListView.setItemChecked(position,true); //返回false会导致OnItemClickListener调用,使以上的选中状态消失 return true; } }); //设置所有条目选中/未选中监听(每次条目状态改变都会回调) mListView.setOnAllItemCheckedListener(new EditListView.OnAllItemCheckedListener() { @Override public void onAllItemChecked(boolean checked) { Log.d("TestActivity", "checked:" + checked); } }); } //删除按钮 public void delete(View view) { //删除所有已选中条目(adapter的源数据为数组时不支持转换) mListView.deleteAllCheckedItem(data); } //编辑按钮 public void edit(View view) { //开启编辑状态 mListView.setEditState(true); } //退出编辑按钮 public void exitEdit(View view) { //关闭编辑状态 mListView.setEditState(false); } //全选按钮 public void selectAll(View view) { //全选 mListView.setAllItemChecked(); //是否全选 Log.d("MainActivity", "isAllItemChecked:" + mListView.isAllItemChecked()); } //全不选按钮 public void selectNone(View view) { //全不选 mListView.setAllItemUnchecked(); //是否全不选 Log.d("MainActivity", "isAllItemUnchecked:" + mListView.isAllItemUnchecked()); }}

结语

控件支持直接代码创建,还有更多API请观看内的注释说明。

欢迎大家使用,感觉好用请给个Star鼓励一下,谢谢!

大家如果有更好的意见或建议以及好的灵感,请邮箱作者,谢谢!

QQ邮箱:

163邮箱:

Gmail邮箱:

转载于:https://blog.51cto.com/13583739/2064246

你可能感兴趣的文章
粗心导致的错误 TNS-03505: Failed to resolve name
查看>>
JSP第三次课内容:JSP实现宠物店设计
查看>>
find详解
查看>>
xargs 和 exec
查看>>
Neutron - Automatic network mtu
查看>>
nodejs 定时调用shell脚本来备份数据库和日志文件并发送到邮箱
查看>>
Exchange 2016部署实施案例篇-01.架构设计篇(上)
查看>>
ajax传递json格式,spring MVC用对象接受
查看>>
AngularJs 指令directive之controller,link,compile
查看>>
线上处理Waiting for table metadata lock
查看>>
授之以渔-运维平台应用模块二(Vmware控制台篇)
查看>>
三对角矩阵
查看>>
判断是否是微信中打开网页
查看>>
单例模式的有缺点
查看>>
perl基础1
查看>>
chrome浏览器如何通过js判断是否安装了某扩展?
查看>>
奔驰的罪恶
查看>>
redhat 6.5 mysql主从同步
查看>>
js 变量、作用域和内存问题
查看>>
Android actionBar 修改背景色
查看>>