2014-11-03 78 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

相关问题