2013-03-05 98 views
0

我有2個ListViews都包含自己的數據。Android:我如何將1 ListAdapter內部的更改通知給第二個ListAdapter?

當用戶點擊第一個ListView中某個項目內的按鈕時,會發生一些數據更改,應該通知第二個ListView。但我似乎無法得到這個工作。在簡化的相關代碼下面:

這是第一個ListFragment。在AsyncTask中,第一個自定義ListAdapter在onPostExecute()期間設置爲setListAdapter()

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在onPostExecute()期間設置爲setListAdapter()

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 
     }    
    {  
    } 

現在對於我的問題...

如何正確使用notifyDataSetChanged()從第一適配器(A)的內部通知第二適配器(B),它應該更新的ListView?我很困惑我應該如何從第一個適配器中檢索對第二個適配器的正確引用,因爲它們都是在AsyncTask中初始化的。

任何幫助將是很好的!

回答

0

嘗試做一些事情是這樣的:

從一個片段創建返回你的適配器的實例的方法:

public customAdapter getDataAdapter() 
    { 
     return dataAdapter; 
    } 

,並在第二個片段讓你的第一個片段的實例: 然後:

firstfragment.getDataAdapter().clear(); 
firstfragment.getDataAdapter().addAll(allDataSet);