我有 2 个 ListViews 都包含自己的数据。
当用户单击第一个项目中的一个项目内的按钮ListView
时,会发生一些数据更改,ListView
应通知第二个项目。但是我似乎无法让它工作。下面是简化的相关代码:
这是第一个 ListFragment。在 AsyncTask 内部,第一个自定义 ListAdapter 设置为setListAdapter()
during onPostExecute()
。
public class FragmentAListSupport extends SherlockListFragment {
String url = "omitted";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AsyncTask<String, Integer, String[]> asynctask =
new DownloadFilesTask(this).execute(url);
}
}
这是第二个 ListFragment。在 AsyncTask 中,第二个自定义 ListAdapter 设置为setListAdapter()
during onPostExecute()
。
public class FragmentBListSupport extends SherlockListFragment {
String url = "omitted";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AsyncTask<String, Integer, String[]> asynctask =
new DownloadDataTask(this).execute(url);
}
}
在第一个 ListFragment (A) 使用的自定义适配器中,我有 onButtonPressed 处理程序。
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
//code omitted
viewHolder.button
.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View buttonview) {
//code omitted that changes some local data
//I need to notify the other ListFragment (B) here that it should update
}
{
}
现在我的问题...
如何正确使用第一个适配器 (A) 内部的 notifyDataSetChanged() 来通知第二个适配器 (B) 它应该更新 ListView?我对如何从第一个适配器内部检索对第二个适配器的正确引用感到困惑,因为它们都是在 AsyncTask 中初始化的。
你能帮忙的话,我会很高兴!