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.