2016-06-23 15 views
0

現在、主な活動の下で私はListフラグメントを使用しており、動的に作成しています。基本的には、フラグメントの同じインスタンスを実行しています。ユーザーは、私がリストと画面から削除できるようにしたいのフラグメントを削除するために選択した後問題:フラグメントアライリスト内のフラグメントの位置を見つけるための論理?

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); 

     } 
    } 


} 

答えて

0

です。私はフラグメント

for (int i = 0; i < fragmentList.size(); i++) { 
if (fragmentList.get(i).equals(frag1)) { 
//found the position so removing it 
pagerAdapter.removeFragment(i); } 
} 
の位置を見つける必要がある場合、私は、フラグメントをこのよう

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

を追加しました

関連する問題