在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示,使用adpater与listview捆绑后,有时希望在程序使用过程中能动态的更改listview中显示的数据

使用adpater与listview捆绑后,有时希望在程序使用过程中能动态的更改listview中显示的数据,如何处理?

一、关键代码段

 代码如下 复制代码
private ListView mListView;
    private Button mBtnChange;
    private android.view.View.OnClickListener mCancelClick;
    private ArrayList<String> mStarNameList = new ArrayList<String>();
    private String[] mAnimalNameList = new String[] {"Dog","Cat","Snake","Duck","Bird"};
    private String[] mStarNameList1 = new String[] {"Kobe","James","Durant","Wade","Love"};
    private ArrayAdapter<String> mAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        this.setCtrlsEventHandler();
        this.mAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_checked,mStarNameList);
        this.mListView = (ListView)findViewById(R.id.listView1);
        this.mBtnChange = (Button)findViewById(R.id.button1);
        this.mBtnChange.setOnClickListener(this.mCancelClick);
        this.mStarNameList.add("Kobe");
        this.mStarNameList.add("James");
        this.mStarNameList.add("Durant");
        this.mStarNameList.add("Wade");
        this.mListView.setAdapter(this.mAdapter);
        this.mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    }
    private boolean mIsMutex = false;
    private void setCtrlsEventHandler()
    {
        this.mCancelClick = new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                if(mIsMutex)
                {
                    mBtnChange.setText("True");
                    mStarNameList.clear();
                    for(int i=0;i<mAnimalNameList.length;i++)
                        mStarNameList.add(mAnimalNameList[i]);
                    mAdapter.notifyDataSetChanged();
                    mIsMutex = false;
                }
                else
                {
                    mBtnChange.setText("False");
                    mStarNameList.clear();
                    for(int i=0;i<mStarNameList1.length;i++)
                        mStarNameList.add(mStarNameList1[i]);
                    mAdapter.notifyDataSetChanged();
                    mIsMutex = true;
                }
            }
        };
    }

功能实现主要原理:

用ArrayList mStarNameList 给Adapter填充数据,再将listview与adapter捆绑。

当要修改数据时候,只需要对mStarNameList 进行修改,再调用Adapter.notifyDataSetChanged()就可以实现效果。

二、执行效果

android ArrayAdapter 如何动态更改数据的更多相关文章

  1. Android应用中动态更改主题的实现

    在android应用程序中我们可能需要切换模式,如晚上切换到夜间模式便于阅读等.本文参考了网上的一些资料,并结合实例,实现了动态更改主题的效果. Android中实现theme主题可以使用在activ ...

  2. Android之ListView动态添加数据(SQLiteOpenHelper类添加数据)

    一.SQLiteOpenHelper类: 这次我们通过sqlite来动态添加数据,接下来我们创建一个openHelper.java,在前面sqlite博客中我们已经详细的讲了SQLite的创建及使用等 ...

  3. Flutter学习(8)——CheckBox多选框使用及动态更改多选框数据

    原文地址:Flutter学习(8)--CheckBox多选框使用及动态更改多选框数据 | Stars-One的杂货小窝 最近项目需求需要调整页面,记录一下实现过程 这次主要是要实现个评价页面,选择不同 ...

  4. TabTopAutoLayout【自定义顶部选项卡区域(带下划线)(动态选项卡数据且可滑动)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 自定义顶部选项卡布局LinearLayout类,实现带下划线且可滑动效果.[实际情况中建议使用RecyclerView] 备注:如果 ...

  5. TabTopAutoTextSizeLayout【自定义文字字号区域(动态选项卡数据且可滑动)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 自定义顶部选项卡布局LinearLayout类,实现可滑动效果.[实际情况中建议使用RecyclerView] 对<TabTo ...

  6. 解决Android与服务器交互大容量数据问题

    对于目前的状况来说,移动终端的网络状况没有PC网络状况那么理想.在一个Android应用中,如果需要接收来自服务器的大容量数据,那么就不得不考虑客户的流量问题.本文根据笔者的一个项目实战经验出发,解决 ...

  7. js简单显示和隐藏div,触发超链接,动态更改button值,setInterval()简单使用,jquery easyui弹出框简单使用 .

    js简单显示和隐藏div .<!DOCTYPE html> .<html> .<head> .<meta charset="UTF-8"& ...

  8. Android中的动态加载机制

    在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势.本 ...

  9. 微信小程序动态更改样式

    获取列表长度(动态渲染),当长度>x时添加内联样式并绑定数据{{}},通过js动态更改{{}}

随机推荐

  1. android中ADT和SDK的关系(转)

    ADT(Android Development Tools): 目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升 ...

  2. Hark的数据结构与算法练习之奇偶排序

    算法说明 奇偶排序又叫奇偶换位排序,砖排序.它是一种交换排序,也是冒泡的一个变种 顾名思义,奇偶排序,其实就是先循环奇数位,然后将奇数位与偶数位比较计算. 然后再循环偶数位,再和奇数位比较运算.看一下 ...

  3. uva494 Kindergarten Counting Game

    #include<bits/stdc++.h>using namespace std;int main(){ int n=0; char a; int flag=1; while((sca ...

  4. invokedynamic指令

    Java虚拟机的字节码指令集的数量从Sun公司的第一款Java虚拟机问世至JDK 7来临之前的十余年时间里,一直没有发生任何变化.随着JDK 7的发布,字节码指令集终于迎来了第一位新成员--invok ...

  5. QUnit使用笔记-4保持原子性与分组

    原子性: 当将许多测试用例放到一起测试的时候,可能会因为相互的副作用而出错:这个时候应该尽可能将他们分别放到test()中测试: 对应测试到Dom,应该尽可能地使用#qunit-fixture,因为它 ...

  6. Kmp 算法模板 C

    /** * name:KMP * time:2012-11-22 * 字符串快速匹配 */ #include<stdio.h> #include<string.h> typed ...

  7. Revit二次开发示例:Journaling

    关于Revit Journal读写的例子.   #region Namespaces using System; using System.Collections.Generic; using Sys ...

  8. Unity3D安装多版本

    今天我也遇到这个版本更换问题.  老外也遇到了的!哈哈. 错误提示是: Fatal error!type = =kMetaAssetType & pathName.find("lib ...

  9. Fengshui-[SZU_B40]

    Description Fengshui is an ancient subject in Chinese tradition. Someone considers it as science and ...

  10. POJ 2117 (割点+连通分量)

    题目链接: http://poj.org/problem?id=2117 题目大意:在一个非连通图中,求一个切除图中任意一个割点方案,使得图中连通分量数最大. 解题思路: 一个大陷阱,m可以等于0,这 ...