刷新视图寻呼机片段

时间:2015-07-16 12:22:51

标签: android android-fragments android-viewpager

我有一个活动,它通过视图寻呼机保存两个片段。 我在片段A上显示了一个arraylist,在片段B中显示了项目的列表视图。当我检查其中一些项目并单击一个按钮时,它们将被传递到片段A的数组列表中,并且应该首先显示。

数据确实按照预期传递给片段A. 问题是它不显示刷新的数组列表。

我尝试将ViewPager成员设置为静态,然后每次单击片段B中的该按钮将其传递给片段A时将其传递给片段A. 然后在片段A中,我在该适配器成员上执行notifyDataSetChanged()。 它仍然无效。

public class PagerActivity extends FragmentActivity implements  MainFragment.AddToHistoryInterface
{
    static ViewPagerAdapter adapter;

@Override
protected void onCreate( Bundle savedInstanceState ) 
{
    super.onCreate( savedInstanceState );
    setContentView( R.layout.activity_pager );

    ViewPager viewPager = ( ViewPager ) findViewById( R.id.viewPager );
    adapter = new ViewPagerAdapter( getSupportFragmentManager() );
    viewPager.setAdapter( adapter );
}


public static void removeFromB( List<Password> listFromB )
{
    MainFragment.fromBtoA( listFromB, adapter );
}

然后,在片段A中: .... ...

public static void fromHistoryToMain( List<Password> listBackToMain, ViewPagerAdapter adapter )
    {
        passwordsList.addAll( 0, listBackToMain );
        adapter.notifyDataSetChanged();
    }

1 个答案:

答案 0 :(得分:1)

首先创建一个界面

public interface UpdateableFragment {
   public void update(UpdateData xyzData);
}

您的片段应该实现UpdateableFragment接口

public class SomeFragment extends Fragment implements
    UpdateableFragment{

    @Override
    public void update(UpdateData xyzData) {
        // do whatever you want to update your data
    }
}

然后像你这样在你的适配器中覆盖getItemPosition方法

@Override
public int getItemPosition(Object object) {
    if (object instanceof UpdateableFragment) {
        ((UpdateableFragment) object).update(updateData);
    }
    //don't return POSITION_NONE, avoid fragment recreation. 
    return super.getItemPosition(object);
}

然后调用此方法更新视图分页器片段

public void refreshContent(UpdateData xyzData) {
    this.updateData = xyzData;
    notifyDataSetChanged();
}