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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM