zoukankan      html  css  js  c++  java
  • android ArrayAdapter 如何动态更改数据

    在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()就可以实现效果。

    二、执行效果

    image

    image

  • 相关阅读:
    DB2 字段操作
    解析二维码
    Eclipse tomcat 内存溢出
    hereim_美句_1
    js自定义函数默认参数的写法
    PHP和JS判断访问客户端的是PC还是移动设备
    lampp服务器配置httpd-vhosts.conf文件,设置多域名
    价值7000万的商业模式,羊毛出在狗身上,猪来买单
    确保 PHP 应用程序的安全
    美国淘金的故事
  • 原文地址:https://www.cnblogs.com/wxmdevelop/p/5381936.html
Copyright © 2011-2022 走看看