Android ListView -- 动态添加及删除Item内容

一、前言

下面代码简单的展示了动态添加、删除ListView里面的Item内容,不过是在OnItemClickListener里面的onItemClick中实现的,代码详情如下展示。

二、代码

  1. 简单的布局文件

    <?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>
    
  2. 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);
            }
        }
    }
    

三、注意事项

  1. 一定要将String[]转成List类型,否则不能动态增加和删除Item。 代码片段: mList = new ArrayList<>(Arrays.asList(mListData));

  2. ArrayAdapter常见的使用方法

            mAdapter.clear();               // 清空整个Item
            mAdapter.remove(String obj);    // 移除名字为obj的Item
            mAdapter.add(String obj);       // 添加名字为obj的Item
            mAdapter.getItem(int postion);  // 根据位置获取Item的名称
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值