一、前言
下面代码简单的展示了动态添加、删除ListView
里面的Item
内容,不过是在OnItemClickListener
里面的onItemClick
中实现的,代码详情如下展示。
二、代码
-
简单的布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ListView android:id="@+id/listview_test" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
-
Java代码部分
package com.example.listview; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class MainActivity extends AppCompatActivity { private static final String LOG_TAG = "MainActivity"; private static final String[] mListData = {"太阳", "水星", "金星", "地球", "火星", "木星", "土星", "天王星", "海王星", "谷神星", "冥王星", "鸟神星", "妊神星", "阋神星"}; private ListView mListView = null; private ArrayAdapter<String> mAdapter = null; private List mList = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { /* 注意: 一定要将String[]转成List类型,否则不能动态增加和删除Item */ mList = new ArrayList<>(Arrays.asList(mListData)); /* 创建适配器实例 */ mAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, mList); /* 获取ListView布局 */ mListView = findViewById(R.id.listview_test); /* Sets the data behind this ListView */ mListView.setAdapter(mAdapter); /* 设置监听 */ mListView.setOnItemClickListener(new ItemSelectedListener()); } private class ItemSelectedListener implements AdapterView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { /* 获取Item内容 */ String itemStr = mAdapter.getItem(position); Log.d(LOG_TAG, "onItemClick, Item: " + itemStr); /* 移除Item */ mAdapter.remove(itemStr); /* 新添加Item */ mAdapter.add("New Item: " + itemStr); } } }
三、注意事项
-
一定要将
String[]
转成List
类型,否则不能动态增加和删除Item
。 代码片段:mList = new ArrayList<>(Arrays.asList(mListData));
-
ArrayAdapter
常见的使用方法mAdapter.clear(); // 清空整个Item mAdapter.remove(String obj); // 移除名字为obj的Item mAdapter.add(String obj); // 添加名字为obj的Item mAdapter.getItem(int postion); // 根据位置获取Item的名称