活动和适配器之间的数据

问题描述:

我使用BaseAdapter来显示ListView的行。 活动和适配器被写入两个不同的类。 在ListActivity中,我使用下面的代码集的行数据。活动和适配器之间的数据

String[] FileName = {"a", "b", "c"}; 
MyAdapter a = new MyAdapter(this, FileName); 
setListAdapter(a); 

在适配器中,它显示每行中的FileName。 但它可能会更改FileName。 所以在活动中,我想获得已更改的数组FileName。 我该怎么办?

适配器代码:

private String[] name = null; 
public BookmarkListAdapter(Context ctxt, String[] s) { 
name = s; 
} 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
ViewTag viewTag; 
if(convertView == null) { 
convertView = myInflater.inflate(R.layout.row_bookmark_list, null); 
viewTag = new ViewTag((TextView)convertView.findViewById(R.id.row_bookmark_info)); 
convertView.setTag(viewTag); 
} 
else { 
viewTag = (ViewTag) convertView.getTag(); 
} 
viewTag.n.setText(name[position]); 
name[position] = name[(position + 1) % 3]; //change 
} 
class ViewTag { 
TextView n; 
public ViewTag(TextView t) { 
this.n = t; 
} 
} 

在此实例中,阵列变化为{ “B”, “C”, “A”}。 在活动中,如何获得改变的数组?

+3

你能修改这个问题吗? – 2012-01-05 07:22:28

+0

在这里你已经硬编码的FileName.so它不会工作得到更新one.for,因此,你需要改变对FileName的引用,这意味着,你应该引用更新的FileName,而不是硬编码之前使用它在MyAdapter。 – Hiral 2012-01-05 07:23:54

+0

我已经编辑我的问题代码。 – brian 2012-01-05 07:36:11

But it may change the FileName. 

你的意思是在FileName值改变,那么你可以调用youradapter.notifyDataSetChanged(),它会更新你的价值观。

或者如果您的意思是更改变量,那么您需要reinstantiate您的适配器并将新的变量名称传递给它。

注意:如果不需要更改变量名称,那么不要在每次需要时更新变量名称。