使用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()就可以实现效果。
二、执行效果
参考文献:
阅读(7108) | 评论(0) | 转发(0) |