android ListView内数据的动态添加与删除实例代码
Android ListView 动态添加和删除数据实例代码详解 Android ListView 是一个常用的UI控件,用于显示大量数据,但是在实际开发中,我们经常需要实现动态添加和删除数据的功能,本文将通过一个实例代码来详细介绍Android ListView 动态添加和删除数据的实现步骤。 一、布局文件设计 我们需要设计两个布局文件:main.xml 和 listview_item.xml。main.xml 文件用于定义 ListView 和两个 Button 控件,listview_item.xml 文件用于定义 ListView 中每个 item 的布局。 main.xml 文件: ```xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/listview" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="添加" /> </LinearLayout> </LinearLayout> ``` listview_item.xml 文件: ```xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:background="#000000" android:padding="20dp" > <EditText android:id="@+id/edit" android:layout_width="200dp" android:layout_height="wrap_content" /> <Button android:id="@+id/del" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="删除" /> </LinearLayout> ``` 二、Adapter 设计 我们需要自定义一个Adapter 来处理 ListView 中的数据。Adapter 负责将数据绑定到 ListView 中的每个 item。 ```java public class MyAdapter extends BaseAdapter { private Context context; private ArrayList<String> dataList; public MyAdapter(Context context, ArrayList<String> dataList) { this.context = context; this.dataList = dataList; } @Override public int getCount() { return dataList.size(); } @Override public Object getItem(int position) { return dataList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = LayoutInflater.from(context).inflate(R.layout.listview_item, null); holder = new ViewHolder(); holder.editText = (EditText) convertView.findViewById(R.id.edit); holder.delButton = (Button) convertView.findViewById(R.id.del); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.editText.setText(dataList.get(position)); holder.delButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dataList.remove(position); notifyDataSetChanged(); } }); return convertView; } class ViewHolder { EditText editText; Button delButton; } } ``` 三、MainActivity 实现 在 MainActivity 中,我们需要实例化 Adapter 并将其设置到 ListView 中。 ```java public class MainActivity extends Activity { private ListView listView; private Button addButton; private ArrayList<String> dataList; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); listView = (ListView) findViewById(R.id.listview); addButton = (Button) findViewById(R.id.add); dataList = new ArrayList<String>(); adapter = new MyAdapter(this, dataList); listView.setAdapter(adapter); addButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dataList.add("NewItem"); adapter.notifyDataSetChanged(); } }); } } ``` 四、总结 通过上面的实例代码,我们可以看到如何动态添加和删除 ListView 中的数据。我们首先设计了两个布局文件,然后自定义了一个Adapter 来处理 ListView 中的数据。在 MainActivity 中,我们实例化了 Adapter 并将其设置到 ListView 中。这样,我们就可以动态添加和删除 ListView 中的数据了。