使用adpater与listview捆绑后,有时希望在程序使用过程中能动态的更改listview中显示的数据,如何处理?
一、关键代码段
- private ListView mListView;
- private Button mBtnChange;
- private android.view.View.OnClickListener mCancelClick;
- private ArrayListString> mStarNameList = new ArrayListString>();
- private String[] mAnimalNameList = new String[] {"Dog","Cat","Snake","Duck","Bird"};
- private String[] mStarNameList1 = new String[] {"Kobe","James","Durant","Wade","Love"};
- private ArrayAdapterString> mAdapter;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- this.setCtrlsEventHandler();
- this.mAdapter = new ArrayAdapterString>(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;imAnimalNameList.length;i++)
- mStarNameList.add(mAnimalNameList[i]);
- mAdapter.notifyDataSetChanged();
- mIsMutex = false;
- }
- else
- {
- mBtnChange.setText("False");
- mStarNameList.clear();
- for(int i=0;imStarNameList1.length;i++)
- mStarNameList.add(mStarNameList1[i]);
- mAdapter.notifyDataSetChanged();
- mIsMutex = true;
- }
- }
- };
- }
功能实现主要原理:
用ArrayList mStarNameList 给Adapter填充数据,再将listview与adapter捆绑。
当要修改数据时候,只需要对mStarNameList 进行修改,再调用Adapter.notifyDataSetChanged()就可以实现效果。
二、执行效果
参考文献: