Android ListView 删除数据
在前面一章节 Android ListView 添加插入数据 中我们学会了如何给 ListView
添加数据和在指定位置插入数据
本章我们就来学习如何从 ListView
中删除数据
ListView 删除数据
从 ListView
中删除某项数据有两种方法
- 根据对象删除
- 根据游标(position) 删除
下面我们就写一个 demo 来演示下这两种方法
如果想在特定位置插入数据,只要传递位置即可
-
复用 Android ListView 添加插入数据 中最后的 demo
-
修改
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 大于数据量的时候会抛出异常,我们这里没有捕获
-
修改布局
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>
-
修改
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 大于数据量的时候会抛出异常,我们这里没有捕获