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