【问题标题】:Issue: Logic to find the position of a fragment in a fragment arraylist?问题:在片段数组列表中查找片段位置的逻辑?
【发布时间】:2016-06-28 23:52:02
【问题描述】:

目前在主要活动下,我正在使用列表片段,并且正在动态创建它。基本上它运行的是同一个片段实例。

    public class MainActivity extends AppCompatActivity
            implements NavigationView.OnNavigationItemSelectedListener, TabsListener {

     public List<Fragment> fragmentList = new ArrayList<>();

     protected void onCreate(Bundle savedInstanceState) {

     fragmentList.add(NewsFragment.newInstance("https://www.yahoo.com"));
            fragmentList.add(NewsFragment.newInstance("http://www.google.com/"));
            fragmentList.add(NewsFragment.newInstance("http://www.stackoverflow.com/"));
            fragmentList.add(NewsFragment.newInstance("http://www.2leep.com/"));

 mViewPager = (ViewPager) findViewById(R.id.pager);

        pagerAdapter = new TabPagerAdapter(getSupportFragmentManager(), fragmentList);
        mViewPager.setAdapter(pagerAdapter);

在用户选择删除片段后,我希望能够将其从列表和屏幕中删除。我似乎无法弄清楚。 请检查活动结果。我也尝试设置静态数字,如

pagerAdapter.removeFragment(0); 但它只会在第一次工作然后列表似乎被重新排列并且数字与片段不匹配。我的问题很简单,我如何获得片段的位置?

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode != RESULT_OK || data == null)


switch (removeTab)
{
case "yahoo"
pagerAdapter.removeFragment(//how to get this position?);

case "google"
pagerAdapter.removeFragment(//how to get this position?);


case "stackoverflow"
pagerAdapter.removeFragment(//how to get this position?);


case "2leep"
pagerAdapter.removeFragment(//how to get this position?);

}

这是我的适配器

public class TabPagerAdapter extends FragmentStatePagerAdapter {


    private List<Fragment> mFragmentList;
    private List<String> tabTitles = new ArrayList<>();


    @Override
    public int getItemPosition(Object object) {
        return PagerAdapter.POSITION_NONE;
    }

    @Override
    public Fragment getItem(int position) {

        return mFragmentList.get(position);
    }

    public TabPagerAdapter(FragmentManager fm, List<Fragment> fragmentList) {
        super(fm);
        mFragmentList = fragmentList;
    }

    @Override
    public int getCount() {

        return mFragmentList.size();
    }

    public void removeFragment(int tabPosition) {

        if (!mFragmentList.isEmpty()) {
            mFragmentList.remove(tabPosition);

        }
    }


}

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    只是为了回答我自己的问题。我以这种方式添加了片段

    public List<Fragment> fragmentList = new ArrayList<>(); 
    private NewsFragment frag1 
    frag1 = NewsFragment.newInstance("https://www.yahoo.com");                  
    fragmentList.add(frag1); 
    

    如果我需要找到片段的位置

    for (int i = 0; i < fragmentList.size(); i++) { 
    if (fragmentList.get(i).equals(frag1)) {
    //found the position so removing it 
    pagerAdapter.removeFragment(i); } 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多