本文共 5091 字,大约阅读时间需要 16 分钟。
今天,我是第一次在51写作,写一篇技术文章,是我自己在Android开发中总结提炼出的一个自定义控件,下面主要对其功能及其使用做简单介绍。
封装列表控件,使其条目具有可编辑选择、删除等功能。
dependencies{ compile 'com.wkp:EditListView:1.0.2' //Android Studio3.0+可用以下方式 //implementation 'com.wkp:EditListView:1.0.2'}
属性讲解
布局示例
代码示例
/** * 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