问题描述
- Activity 和 adapter之间的数据
-
我使用 BaseAdapter 来显示 ListView 的行数。 Activity 和adapter 在两个不同的类中创建。
在 ListActivity 中,我使用下面的代码设置行中的数据。String[] FileName = {"a", "b", "c"}; MyAdapter a = new MyAdapter(this, FileName); setListAdapter(a);
在adapter中的每一行里都显示FileName,但是它可能改变 FileName。所以在 activity 中,我想获取改变了的 FileName 数组。
如何实现?
Adapter 代码: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"}。在 activity 中,如何获取改变了的数组?
解决方案
没清楚你的意图,如果是Activity获取Adapter中的string[]的话,可以在adapter中对string[]写个public 的getter就好,Activity就能通过ListView.getAdadpter强转成BookmarkListAdapter,再调用getter方法就好了
如果是Activity设置数据更新了的话,只需要重新设置下数据,notifyDataSet就OK了
时间: 2025-01-20 08:57:00