活动和适配器之间的数据

时间:2012-01-05 07:17:45

标签: android

我使用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”}。 在活动中,如何获得更改的数组?

1 个答案:

答案 0 :(得分:1)

But it may change the FileName. 

您的意思是更改FileName的值,然后您可以致电youradapter.notifyDataSetChanged(),它会更新您的值。

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

注意:如果没有必要更改变量名称,则不要在每次需要时更新值。