• 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

  • 相关阅读:
    PHP简单模拟登录功能实例分享
    一个form表单,多个提交按钮
    jquery validation验证身份证号、护照、电话号码、email
    MockMvc和Mockito之酷炫使用
    Java8 Stream API
    第一章 Lambda表达式
    Java中线程顺序执行
    单元测试之获取Spring下所有Bean
    iBatis之type
    json解析之jackson ObjectMapper
  • 原文地址:https://www.cnblogs.com/wxmdevelop/p/5381936.html
Copyright © 2020-2023  润新知