下面代码简单的展示了动态添加、删除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的名称