溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

ListView可編輯選擇與刪除條目怎么實(shí)現(xiàn)

發(fā)布時(shí)間:2021-12-22 11:14:51 來(lái)源:億速云 閱讀:209 作者:iii 欄目:移動(dòng)開(kāi)發(fā)

這篇文章主要講解了“ListView可編輯選擇與刪除條目怎么實(shí)現(xiàn)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“ListView可編輯選擇與刪除條目怎么實(shí)現(xiàn)”吧!

   首先,我們來(lái)看一下效果演示圖:

ListView可編輯選擇與刪除條目怎么實(shí)現(xiàn)

  接下來(lái),我們講解一下控件功能及其使用:

1.功能

封裝列表控件,使其條目具有可編輯選擇、刪除等功能。

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

屬性講解

        <!--是否開(kāi)啟測(cè)量高度-->
        <attr name="wkp_measureHeight" format="boolean"/>
        <!--未選中狀態(tài)時(shí)圖標(biāo)-->
        <attr name="wkp_uncheckedImg" format="reference"/>
        <!--選中狀態(tài)時(shí)圖標(biāo)-->
        <attr name="wkp_checkedImg" format="reference"/>
        <!--編輯/退出編輯動(dòng)畫(huà)時(shí)長(zhǎng)(默認(rèn)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>("托兒索", "兒童劫", "小學(xué)僧", "橡皮妮", "喜之螂", "提款姬", "魚(yú)尾雯", "雞毛信", "娃娃魚(yú)", "過(guò)家嘉", "尿不獅", "沙琪馬", "阿童木", "大嘴猴", "香港皎")
    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)
        //設(shè)置適配器
        mListView!!.adapter = adapter
        //設(shè)置是否測(cè)量高度(解決ScrollView沖突)
//        mListView!!.setMeasureHeight(true)
        //長(zhǎng)按監(jiān)聽(tīng)
        mListView!!.setOnItemLongClickListener({ parent, view, position, id ->
            //開(kāi)啟編輯狀態(tài)
            mListView!!.isEditState = true
            //設(shè)置長(zhǎng)按條目選中狀態(tài)
            mListView!!.setItemChecked(position, true)
            //返回false會(huì)導(dǎo)致OnItemClickListener調(diào)用,使以上的選中狀態(tài)消失
            true
        })
        //設(shè)置所有條目選中/未選中監(jiān)聽(tīng)(每次條目狀態(tài)改變都會(huì)回調(diào))
        mListView!!.setOnAllItemCheckedListener { checked -> Log.d("MainActivity", "checked:" + checked) }
    }

    //刪除按鈕
    fun delete(view: View) {
        //刪除所有已選中條目(adapter的源數(shù)據(jù)為數(shù)組時(shí)不支持轉(zhuǎn)換)
        mListView!!.deleteAllCheckedItem(data)
    }

//  編輯按鈕
    fun edit(view: View) {
//      開(kāi)啟編輯狀態(tài)
        mListView!!.isEditState = true
    }

//  退出編輯按鈕
    fun exitEdit(view: View) {
//       關(guān)閉編輯狀態(tài)
        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 = {"托兒索", "兒童劫", "小學(xué)僧", "橡皮妮", "喜之螂", "提款姬", "魚(yú)尾雯", "雞毛信", "娃娃魚(yú)", "過(guò)家嘉", "尿不獅",
            "沙琪馬", "阿童木", "大嘴猴", "香港皎","腦殘片","賣(mài)賣(mài)賣(mài)","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);
        //設(shè)置編輯/退出編輯動(dòng)畫(huà)時(shí)長(zhǎng)
        mListView.setAnimDuration(400);
        //設(shè)置適配器
        mListView.setAdapter(new ArrayAdapter<String>(this,R.layout.item_lv,R.id.item_tv,data));
        //條目長(zhǎng)按監(jiān)聽(tīng)
        mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                //開(kāi)啟編輯狀態(tài)
                mListView.setEditState(true);
                //設(shè)置長(zhǎng)按條目選中狀態(tài)
                mListView.setItemChecked(position,true);
                //返回false會(huì)導(dǎo)致OnItemClickListener調(diào)用,使以上的選中狀態(tài)消失
                return true;
            }
        });
        //設(shè)置所有條目選中/未選中監(jiān)聽(tīng)(每次條目狀態(tài)改變都會(huì)回調(diào))
        mListView.setOnAllItemCheckedListener(new EditListView.OnAllItemCheckedListener() {
            @Override
            public void onAllItemChecked(boolean checked) {
                Log.d("TestActivity", "checked:" + checked);
            }
        });
    }
    //刪除按鈕
    public void delete(View view) {
        //刪除所有已選中條目(adapter的源數(shù)據(jù)為數(shù)組時(shí)不支持轉(zhuǎn)換)
        mListView.deleteAllCheckedItem(data);
    }
    //編輯按鈕
    public void edit(View view) {
        //開(kāi)啟編輯狀態(tài)
        mListView.setEditState(true);
    }
    //退出編輯按鈕
    public void exitEdit(View view) {
        //關(guān)閉編輯狀態(tài)
        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可編輯選擇與刪除條目怎么實(shí)現(xiàn)”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)ListView可編輯選擇與刪除條目怎么實(shí)現(xiàn)這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI