在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.notifyDataSetChanged()就可以實現效果。
二、執行效果