0

我有 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 中初始化的。

你能帮忙的话,我会很高兴!

4

1 回答 1

0

尝试做这样的事情:

从一个片段创建一个返回适配器实例的方法:

  public customAdapter getDataAdapter()
  {
       return dataAdapter;
  }

并在第二个片段中获取第一个片段的实例:然后:

firstfragment.getDataAdapter().clear();
firstfragment.getDataAdapter().addAll(allDataSet);
于 2013-03-06T00:03:20.040 回答