ListView可编辑选择与删除条目怎么实现

这篇文章主要讲解了“ListView可编辑选择与删除条目怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ListView可编辑选择与删除条目怎么实现”吧!

站在用户的角度思考问题,与客户深入沟通,找到环江网站设计与环江网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:做网站、成都网站建设、企业官网、英文网站、手机端网站、网站推广、域名申请、网络空间、企业邮箱。业务覆盖环江地区。

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

ListView可编辑选择与删除条目怎么实现

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

1.功能

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

2.Android Studio使用方法
dependencies{
      compile 'com.wkp:EditListView:1.0.2'
      //Android Studio3.0+可用以下方式
      //implementation 'com.wkp:EditListView:1.0.2'
}
3.使用详解

属性讲解

        <!--是否开启测量高度-->
        <attr name="wkp_measureHeight" format="boolean"/>
        <!--未选中状态时图标-->
        <attr name="wkp_uncheckedImg" format="reference"/>
        <!--选中状态时图标-->
        <attr name="wkp_checkedImg" format="reference"/>
        <!--编辑/退出编辑动画时长(默认200)-->
        <attr name="wkp_editAnimDuration" format="integer"/>

布局示例

<!--activity_main.xml-->
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:id="@+id/sv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/delete"
                android:onClick="delete"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:padding="@dimen/len_5dp"
                android:text="删除"/>

            <TextView
                android:id="@+id/edit"
                android:onClick="edit"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:padding="@dimen/len_5dp"
                android:text="编辑"/>

            <TextView
                android:id="@+id/exit_edit"
                android:onClick="exitEdit"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:padding="@dimen/len_5dp"
                android:text="退出编辑"/>

            <TextView
                android:id="@+id/select_all"
                android:onClick="selectAll"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:padding="@dimen/len_5dp"
                android:text="全选"/>

            <TextView
                android:id="@+id/select_none"
                android:onClick="selectNone"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:padding="@dimen/len_5dp"
                android:text="全不选"/>

        </LinearLayout>

        <com.wkp.editlistview_library.view.EditListView
            android:id="@+id/lv"
            app:wkp_checkedImg="@drawable/ic_checked"
            app:wkp_uncheckedImg="@drawable/ic_uncheck"
            app:wkp_measureHeight="true"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"></com.wkp.editlistview_library.view.EditListView>

    </LinearLayout>
</ScrollView>

<!--item_lv.xml-->
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

    <TextView
        android:id="@+id/item_tv"
        android:padding="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <TextView
        android:padding="10dp"
        android:layout_alignParentRight="true"
        android:text="新"
        android:textColor="@android:color/white"
        android:background="@android:color/holo_red_light"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</RelativeLayout>

代码示例

/**
 * kotlin用法
 */
 @RequiresApi(Build.VERSION_CODES.KITKAT)
class MainActivity : AppCompatActivity() {

    private val data = arrayListOf<String>("托儿索", "儿童劫", "小学僧", "橡皮妮", "喜之螂", "提款姬", "鱼尾雯", "鸡毛信", "娃娃鱼", "过家嘉", "尿不狮", "沙琪马", "阿童木", "大嘴猴", "香港皎")
    private var mListView: EditListView? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        mListView = findViewById<EditListView>(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<String> 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<String>(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());
    }
}

感谢各位的阅读,以上就是“ListView可编辑选择与删除条目怎么实现”的内容了,经过本文的学习后,相信大家对ListView可编辑选择与删除条目怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!

分享名称:ListView可编辑选择与删除条目怎么实现
链接分享:https://www.cdcxhl.com/article12/jcoogc.html

成都网站建设公司_创新互联,为您提供网页设计公司网站收录手机网站建设网站制作关键词优化网站设计公司

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

小程序开发