我实现了下图所描述的情况:
问题是:
当我更新gridView 1时,我必须更新GridView 2,如何才能做到这一点呢?我只能通过执行一个新的Volley请求在其适配器中更新GridView 2,也许我可以通过在片段2中重新设置适配器来实现这一点,我可以使用适配器GridView 1中对片段2的引用吗?
详细信息:-- GridView 1是在适配器本身发出截击请求后在适配器上执行的notifyDataSetChanged()更新的。我不能使用片段2的onResume()方法,因为它没有被调用,因为它是在片段1同时显示的。
有什么想法吗?
谢谢。
发布于 2014-11-05 13:15:59
监听器只是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)在您的活动中,在创建fragmentGridView1时设置侦听器
public YourActivity{
//Your code
FragmentGridView1 fragment = new FragmentGridView1();
fragment.setOnUpdateGridView2Listener(getApplication());
}
发布于 2014-11-05 02:36:22
您可以尝试实现如下的侦听器模式:
FragmentTab2 {
private interface DataListener {
public Data getData();
}
private DataListener dataListener = new DataListener();
Data = dataListener.getData();
}
FragmentTab1 implements DataListener {
@Override
public Data getData() {
return Data;
}
}
如果您需要通知、注册和取消注册侦听器,请在这里尝试如下:观测器设计模式
https://stackoverflow.com/questions/26712340
复制相似问题