代码之家  ›  专栏  ›  技术社区  ›  Marcus J.Kennedy

碎片白页上的RecyclerView

  •  0
  • Marcus J.Kennedy  · 技术社区  · 7 年前

    我已经为tab创建了一个片段,并在这个片段中放置了一个recyclerview,请遵循以下代码:

    片段1 Java:

    @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
    
            mView = inflater.inflate(R.layout.fragment_two, container, false);
            mRecyclerView = (RecyclerView) mView.findViewById(R.id.my_recycler_view);
            mRecyclerView.setHasFixedSize(true);
            mLayoutManager = new LinearLayoutManager(getContext());
            mRecyclerView.setLayoutManager(mLayoutManager);
            mAdapter = new MyRecyclerViewAdapter(getDataSet());
            mRecyclerView.setAdapter(mAdapter);
    
            return inflater.inflate(R.layout.fragment_two, container, false);
        }
    

    片段1 XML:

        <android.support.v7.widget.RecyclerView
                android:id="@+id/my_recycler_view"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scrollbars="vertical"/>
    

    活动调用片段选项卡:

     private void setupViewPager(ViewPager viewPager) {
                ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
                adapter.addFragment(new OneFragment(), "Cliente");
                adapter.addFragment(new TwoFragment(), "Prodotti");
                viewPager.setAdapter(adapter);
            }
    
            class ViewPagerAdapter extends FragmentPagerAdapter {
                private final List<Fragment> mFragmentList = new ArrayList<>();
                private final List<String> mFragmentTitleList = new ArrayList<>();
    
                public ViewPagerAdapter(FragmentManager manager) {
                    super(manager);
                }
    
                @Override
                public Fragment getItem(int position) {
                    return mFragmentList.get(position);
                }
    
                @Override
                public int getCount() {
                    return mFragmentList.size();
                }
    
                public void addFragment(Fragment fragment, String title) {
                    mFragmentList.add(fragment);
                    mFragmentTitleList.add(title);
                }
    
                @Override
                public CharSequence getPageTitle(int position) {
                    return mFragmentTitleList.get(position);
                }
            }
    

    我没有任何错误,但是debug说:

    E/RecyclerView: No adapter attached; skipping layout
    

    我在谷歌上搜索过,但没有解决我的问题,你有什么建议吗??如果你需要更多的代码,尽管问,无论如何谢谢。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Pankaj Kumar    7 年前

    问题出在线路上

        mView = inflater.inflate(R.layout.fragment_two, container, false);
        ........
    
        return inflater.inflate(R.layout.fragment_two, container, false);
    

    当你写信的时候 return inflater.inflate(R.layout.fragment_two, container, false); 您正在重新填充视图并返回未初始化任何内容的新视图。


    你只需要返回你以前膨胀过的视图(即。 mView )

    所以你的代码必须是

    mView = inflater.inflate(R.layout.fragment_two, container, false);
            mRecyclerView = (RecyclerView) mView.findViewById(R.id.my_recycler_view);
            mRecyclerView.setHasFixedSize(true);
            mLayoutManager = new LinearLayoutManager(getContext());
            mRecyclerView.setLayoutManager(mLayoutManager);
            mAdapter = new MyRecyclerViewAdapter(getDataSet());
            mRecyclerView.setAdapter(mAdapter);
    
            return mView;
    
    推荐文章