Android 使用RecyclerView适配器加载XML数据的滑动选项卡未正确显示内容

Android 使用RecyclerView适配器加载XML数据的滑动选项卡未正确显示内容,android,tabs,material-design,sliding,pagerslidingtabstrip,Android,Tabs,Material Design,Sliding,Pagerslidingtabstrip,我一直在开发一个应用程序来获取博客提要,并使用回收器和卡片视图在应用程序中解析和显示它。我添加了滑动标签,以在单独的标签中显示站点中每个类别的文章。我使用分类URL解析提要,并能够使用相同的回收器视图适配器显示它 问题来了,当我快速浏览标签时,在某些情况下无法加载内容。在某些情况下,我会从另一个类别的选项卡中显示的一个类别中获取文章 下面是“我的标签”片段的代码: public class TabsFragment extends Fragment { ViewPager mViewPager;

我一直在开发一个应用程序来获取博客提要,并使用回收器和卡片视图在应用程序中解析和显示它。我添加了滑动标签,以在单独的标签中显示站点中每个类别的文章。我使用分类URL解析提要,并能够使用相同的回收器视图适配器显示它

问题来了,当我快速浏览标签时,在某些情况下无法加载内容。在某些情况下,我会从另一个类别的选项卡中显示的一个类别中获取文章

下面是“我的标签”片段的代码:

public class TabsFragment extends Fragment {
ViewPager mViewPager;
ViewPagerAdapter mAdapter;
SlidingTabLayout mSlidingTabLayout;
CharSequence Titles[] = {"Home", "Events", "Category", "Bookmarks", "News"};
int NoOfTabs = 5;

private ProgressBar mProgressBar;
private RecyclerView mRecyclerView;
private MyRecyclerViewAdapter myRecyclerViewAdapter;

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.activity_tabs, container, false);
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    mAdapter = new ViewPagerAdapter(Titles, NoOfTabs);

    mProgressBar = (ProgressBar) view.findViewById(R.id.loading_spinner);

    mViewPager = (ViewPager) view.findViewById(R.id.pager);
    mViewPager.setAdapter(mAdapter);

    mSlidingTabLayout = (SlidingTabLayout) view.findViewById(R.id.tabs);
    mSlidingTabLayout.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
        @Override
        public int getIndicatorColor(int position) {
            return getResources().getColor(R.color.secondaryBackgroundColor);
        }

        @Override
        public int getDividerColor(int position) {
            return getResources().getColor(R.color.secondaryBackgroundColor);
        }
    });
    mSlidingTabLayout.setViewPager(mViewPager);

}

public class ViewPagerAdapter extends PagerAdapter {

    CharSequence mTitles[];
    int mNoOfTabs;

    public ViewPagerAdapter(CharSequence[] titles, int noOfTabs) {
        mTitles = titles;
        mNoOfTabs = noOfTabs;
    }


    public CharSequence getPageTitle(int position) {
        return mTitles[position];
    }

    @Override
    public int getCount() {
        return mNoOfTabs;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        View view = getActivity().getLayoutInflater().inflate(R.layout.pager_item_articles,
                container, false);
        container.addView(view);

        ProcessArticles processArticles;

         processArticles = new ProcessArticles(null, mTitles[position]);
         processArticles.execute();


        mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity().getApplicationContext()));

        myRecyclerViewAdapter = new MyRecyclerViewAdapter(new ArrayList<Article>(),
                getActivity().getApplicationContext());
        mRecyclerView.setAdapter(myRecyclerViewAdapter);

        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);

    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return object == view;
    }
}

public class ProcessArticles extends GetXmlData {

    public ProcessArticles(String searchCriteria, String category) {
        super(searchCriteria, category);
    }

    @Override
    public void execute() {
        super.execute();
        ProcessData processData = new ProcessData();
        processData.execute();
    }

    public class ProcessData extends DownloadXmlData {

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);

            ParseArticles parseArticles = new ParseArticles(getData());
            boolean operationStatus = parseArticles.process();
            if (operationStatus) {
                ArrayList<Article> allArticles = parseArticles.getArticles();
                myRecyclerViewAdapter.loadNewData(allArticles);
            } else {
                Toast.makeText(getActivity().getApplicationContext(), "Error establishing correction.", Toast.LENGTH_SHORT).show();
                Log.d("MainActivity", "Error establishing correction.");
            }

        }
    }
}
}
如何根据选项卡中的类别分隔内容?我试图减少代码量,因此,我使用了相同的回收适配器。这个问题有什么解决办法吗?还是我应该改变实施方法?我希望实现类似Play Newstand的应用程序

public class TabsActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_tabs);
    activateToolbarWithHomeEnabled();

    if (savedInstanceState == null) {
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        TabsFragment fragment = new TabsFragment();
        transaction.replace(R.id.tab_content_frame, fragment);
        transaction.commit();
    }
}
}