2014-11-03 29 views
0

予實現的圖像在下面描述的情況:交際通過適配器notifyDataSetChanged()

enter image description here

的問題是:

我必須更新GRIDVIEW 2當我更新GridView 1,最好的方法是怎麼做到的?我只能在其適配器更新GridView的2通過做一個新的凌空請求,也許我可以通過重新設置適配器在片段2做到這一點,我可以用它來對片段2參考在適配器GridView 1

細節:的GridView 1notifyDataSetChanged()適配器本身凌空請求之後執行的適配器更新。我不能使用onResume()方法片段2,因爲它沒有被調用,因爲它被顯示在片段1的同一時間。

任何想法?

謝謝。

回答

3

偵聽器是隻是在JAVA中的一個接口。所以你不能創建一個接口的對象(「新」運算符)

1)創建一個接口

public Interface OnUpdateGridView2Listener{ 
     public void onUpdate() //Add the kind of data you want in the parameters 
} 

2)gridView1的適配器創建界面中的一員,並調用其方法

public GidViewAdapter1 extends Adapter{ 
    private OnUpdateGridView2Listener myListener; 

    //Your code 

    @Override 
    public void notifyDataSetChanged(){ 
      //Your code 
      myListener.onUpdate(); 
    } 

    public void setOnUpdateGridView2Listener(OnUpdateGridView2Listener list){ 
      this.myListener = list;  
    } 
} 

3)實現在片段中的接口,並通知適配器

public FragmentGridView2 extends Fragment implements OnUpdateGridView2Listener{ 

     @Override 
     public void onUpdate(){ 
      //Your code 
      gridView2Adapter.notifyDataSetChanged(); 
     } 
}  

4)在你的活動中,當你創建你的分片時設置監聽器GridView 1

public YourActivity{ 

     //Your code 

     FragmentGridView1 fragment = new FragmentGridView1(); 
     fragment.setOnUpdateGridView2Listener(getApplication()); 
} 
+0

或者,你可以使用EventBus或Otto庫。 – 2014-11-05 14:16:49

1

你可以嘗試實現這樣的監聽模式:

FragmentTab2 { 

    private interface DataListener { 
     public Data getData(); 
    } 

    private DataListener dataListener = new DataListener(); 

    Data = dataListener.getData(); 

} 


FragmentTab1 implements DataListener { 

    @Override 
    public Data getData() { 
     return Data; 
    } 

} 

還是有點更多地參與如果你需要通知,註冊和註銷監聽器試試這個位置:Observer Design Pattern

相關問題