Android ListView 删除数据

在前面一章节 Android ListView 添加插入数据 中我们学会了如何给 ListView 添加数据和在指定位置插入数据

本章我们就来学习如何从 ListView 中删除数据

ListView 删除数据

从 ListView 中删除某项数据有两种方法

  1. 根据对象删除
  2. 根据游标(position) 删除

下面我们就写一个 demo 来演示下这两种方法


如果想在特定位置插入数据,只要传递位置即可

  1. 复用 Android ListView 添加插入数据 中最后的 demo

  2. 修改 TalkAdapter.java 添加两个方法 remove() 方法

    public void remove(TalkBean data) {
    
        if(mData != null) {
            mData.remove(data);
        }
        notifyDataSetChanged();
    }
    
    public void remove(int position) {
        if(mData != null) {
            mData.remove(position);
        }
        notifyDataSetChanged();
    }
    
    > 当 pos 大于数据量的时候会抛出异常,我们这里没有捕获
    
  3. 修改布局 activity_main.xml 添加两个 删除数据按钮

    <?xml version="1.0" encoding="utf-8" ?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="8dp" 
        android:orientation="vertical" >
    
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="8dp" 
            android:orientation="horizontal" >
    
            <Button
                android:id="@+id/btn_add"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content" 
                android:text = "添加" />
    
            <Button
                android:id="@+id/btn_remove_1"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content" 
                android:text = "对象删除" />
    
            <Button
                android:id="@+id/btn_remove_2"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content" 
                android:text = "游标删除" />
    
        </LinearLayout>
    
        <include  
                android:id="@+id/talk_empty"  
                layout="@layout/listview_empty"/>
    
        <ListView
            android:id="@+id/listview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>
    
  4. 修改 MainActivity.java 添加按钮的点击事件

    package cn.twle.android.listviewcrud;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    import android.widget.ListView;
    import android.widget.Button;
    import android.widget.Toast;
    import android.widget.AdapterView;
    
    import android.view.View;
    
    import java.util.LinkedList;
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    
        private ListView listview;
        private TalkAdapter talkAdapter = null;
        private List<TalkBean> mData = null;
        private int flag = 0;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.activity_main);
    
            listview = (ListView) findViewById(R.id.listview);
    
            View listview_empty = findViewById(R.id.talk_empty);  
            listview.setEmptyView(listview_empty);
    
            mData = new LinkedList<TalkBean>();
            talkAdapter = new TalkAdapter((LinkedList<TalkBean>) mData,MainActivity.this);
    
            listview.setAdapter(talkAdapter);
    
            Button btn_add = findViewById(R.id.btn_add);
    
            Button btn_delete_1 = findViewById(R.id.btn_remove_1);
            Button btn_delete_2 = findViewById(R.id.btn_remove_2);
    
            btn_add.setOnClickListener(this);
            btn_delete_1.setOnClickListener(this);
            btn_delete_2.setOnClickListener(this);
        }
    
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.btn_add:
                    talkAdapter.add(new TalkBean(R.drawable.golf,"你好 " + flag));
                    flag++;
                    break;
    
                case R.id.btn_remove_1:
                    TalkBean d = mData.get(2);
                    if (d != null )
                        talkAdapter.remove(d);
                    break;
                case R.id.btn_remove_2:
                    talkAdapter.remove(2);
                    break;
            }
        }
    }
    

    当 pos 大于数据量的时候会抛出异常,我们这里没有捕获

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

♥   简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.