当 MapFragment 中的相机发生变化时更新 listFragment

Update listFragment when camera changes in MapFragment

我有一个包含两个片段的应用程序,我想为其实现 ViewPager 和 ActionBarTabs。我的问题是:每次用户在我的 MapFragment 中移动相机时,有没有办法重新创建我的 ListFragment ?每个移动都会为我用来填充 ListFragment 的数组分配不同的值。我看过这个 link Synchronize all the ListView in a ViewPager 但它看起来太复杂了。请帮忙。 考虑到我不能在适配器上使用 notifyDataSetChanged(),因为我想保持我的 MapFragment 不变而不是重新创建它。

您可以尝试使用像这样的更新方法制作接口

public interface UpdatingFragment {
public void update();}

然后让你的ListFragment实现这个接口。并在更新方法中重新创建 ListFragment 中的列表。

public class MyListFragment extends ListFragment implements UpdatingFragment{

@override
public void update(){
//whatever code you use to update your fragment
}

然后从您的 PagerAdapter 调用此方法

@Override
public int getItemPosition(Object item) {
    if (item instanceof UpdatingFragment) {
        ((UpdatingFragment) item).update();
    }
    //don't recreate fragment 
    return super.getItemPosition(item);
}

现在,如果您在 viewpager 适配器上调用 notifyDataSetChanged(),它应该有望在不影响地图的情况下更新您的 ListFragment。每次用户在地图片段中移动相机时调用此方法。