首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用片段创建多个可滚动的可回收视图

使用片段创建多个可滚动的可回收视图
EN

Stack Overflow用户
提问于 2018-04-23 05:41:17
回答 2查看 74关注 0票数 0

我正在制作一个应用程序,我试图通过观看这个教程来实现多个水平滚动可回收视图,但我使用的是片段,当我在片段中为createDummyData添加一个方法时,在createDummyData方法中使用该对象时,它显示了HomeFragment代码的错误。

其他的一切,我已经通过观看教程正确地实现,但由于我没有足够的知识与片段,我不知道我去哪里出错,请提供任何帮助,将不胜感激。

代码语言:javascript
复制
public class HomeFragment extends Fragment {

    LadderLayoutManager llm;
    RecyclerView.LayoutManager multi_scroll_layout_manager;
    RecyclerView rcv,multi_scroll_recyclerview;
    HSAdapter adapter;
    RecyclerView.Adapter multi_scroll_adapter;
    int scrollToPosition;
    public HomeFragment() {
        // Required empty public constructor
    }



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        createDummyData();
        int[] images = {R.drawable.vancouver,R.drawable.party,R.drawable.hands_ip,R.drawable.dj};
        // Inflate the layout for this fragment
        ArrayList<SectionDataModel> allSampleData;
        allSampleData = new ArrayList<SectionDataModel>();

        HorizontalAdapter firstAdapter = new HorizontalAdapter(images);
        View view = inflater.inflate(R.layout.fragment_home, container, false);
        llm = new LadderLayoutManager(1.5f, 0.85f, LadderLayoutManager.HORIZONTAL).
                setChildDecorateHelper(new LadderLayoutManager
                        .DefaultChildDecorateHelper(getResources().getDimension(R.dimen.item_max_elevation)));
        llm.setChildPeekSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
                30, getResources().getDisplayMetrics()));
        llm.setMaxItemLayoutCount(5);

        rcv = (RecyclerView) view.findViewById(R.id.rcv);
        rcv.setLayoutManager(llm);

        new LadderSimpleSnapHelper().attachToRecyclerView(rcv);
        adapter = new HSAdapter();
        rcv.setAdapter(adapter);

        multi_scroll_recyclerview = (RecyclerView)view.findViewById(R.id.multi_scroll_recyclerview);
        multi_scroll_layout_manager = new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false);
        multi_scroll_recyclerview.setLayoutManager(multi_scroll_layout_manager);
        multi_scroll_adapter = new RecyclerViewDataAdapter(getActivity(),allSampleData);
        multi_scroll_recyclerview.setAdapter(multi_scroll_adapter);
        multi_scroll_recyclerview.setHasFixedSize(true);






       /* MultiSnapRecyclerView firstRecyclerView = (MultiSnapRecyclerView)view.findViewById(R.id.first_recycler_view);
        LinearLayoutManager firstManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
        firstRecyclerView.setLayoutManager(firstManager);
        firstRecyclerView.setAdapter(firstAdapter);

        HorizontalAdapter secondAdapter = new HorizontalAdapter(images);
        MultiSnapRecyclerView secondRecyclerView =(MultiSnapRecyclerView) view.findViewById(R.id.second_recycler_view);
        LinearLayoutManager secondManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
        secondRecyclerView.setLayoutManager(secondManager);
        secondRecyclerView.setAdapter(secondAdapter);

        HorizontalAdapter thirdAdapter = new HorizontalAdapter(images);
        MultiSnapRecyclerView thirdRecyclerView = (MultiSnapRecyclerView)view.findViewById(R.id.third_recycler_view);
        LinearLayoutManager thirdManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
        thirdRecyclerView.setLayoutManager(thirdManager);
        thirdRecyclerView.setAdapter(thirdAdapter);*/


        return view;

    }
    public void createDummyData() {
        for (int i = 1; i <= 5; i++) {

            SectionDataModel dm = new SectionDataModel();

            dm.setHeaderTitle("Section " + i);

            ArrayList<SingleItemModel> singleItem = new ArrayList<SingleItemModel>();
            for (int j = 0; j <= 5; j++) {
                singleItem.add(new SingleItemModel("Item " + j, "URL " + j));
            }

            dm.setAllItemsInSection(singleItem);

            allSampleData.add(dm);//line which is causing issue

        }
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-23 05:48:03

尝试将行ArrayList<SectionDataModel> allSampleData;移到public class HomeFragment extends Fragment {之后

或者直接粘贴这个

代码语言:javascript
复制
public class HomeFragment extends Fragment {

ArrayList<SectionDataModel> allSampleData;


LadderLayoutManager llm;
RecyclerView.LayoutManager multi_scroll_layout_manager;
RecyclerView rcv,multi_scroll_recyclerview;
HSAdapter adapter;
RecyclerView.Adapter multi_scroll_adapter;
int scrollToPosition;
public HomeFragment() {
    // Required empty public constructor
}



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    int[] images = {R.drawable.vancouver,R.drawable.party,R.drawable.hands_ip,R.drawable.dj};
    // Inflate the layout for this fragment
           allSampleData = new ArrayList<SectionDataModel>();

            createDummyData();


    HorizontalAdapter firstAdapter = new HorizontalAdapter(images);
    View view = inflater.inflate(R.layout.fragment_home, container, false);
    llm = new LadderLayoutManager(1.5f, 0.85f, LadderLayoutManager.HORIZONTAL).
            setChildDecorateHelper(new LadderLayoutManager
                    .DefaultChildDecorateHelper(getResources().getDimension(R.dimen.item_max_elevation)));
    llm.setChildPeekSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
            30, getResources().getDisplayMetrics()));
    llm.setMaxItemLayoutCount(5);

    rcv = (RecyclerView) view.findViewById(R.id.rcv);
    rcv.setLayoutManager(llm);

    new LadderSimpleSnapHelper().attachToRecyclerView(rcv);
    adapter = new HSAdapter();
    rcv.setAdapter(adapter);

    multi_scroll_recyclerview = (RecyclerView)view.findViewById(R.id.multi_scroll_recyclerview);
    multi_scroll_layout_manager = new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false);
    multi_scroll_recyclerview.setLayoutManager(multi_scroll_layout_manager);
    multi_scroll_adapter = new RecyclerViewDataAdapter(getActivity(),allSampleData);
    multi_scroll_recyclerview.setAdapter(multi_scroll_adapter);
    multi_scroll_recyclerview.setHasFixedSize(true);






   /* MultiSnapRecyclerView firstRecyclerView = (MultiSnapRecyclerView)view.findViewById(R.id.first_recycler_view);
    LinearLayoutManager firstManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
    firstRecyclerView.setLayoutManager(firstManager);
    firstRecyclerView.setAdapter(firstAdapter);

    HorizontalAdapter secondAdapter = new HorizontalAdapter(images);
    MultiSnapRecyclerView secondRecyclerView =(MultiSnapRecyclerView) view.findViewById(R.id.second_recycler_view);
    LinearLayoutManager secondManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
    secondRecyclerView.setLayoutManager(secondManager);
    secondRecyclerView.setAdapter(secondAdapter);

    HorizontalAdapter thirdAdapter = new HorizontalAdapter(images);
    MultiSnapRecyclerView thirdRecyclerView = (MultiSnapRecyclerView)view.findViewById(R.id.third_recycler_view);
    LinearLayoutManager thirdManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
    thirdRecyclerView.setLayoutManager(thirdManager);
    thirdRecyclerView.setAdapter(thirdAdapter);*/


    return view;

}
public void createDummyData() {
    for (int i = 1; i <= 5; i++) {

        SectionDataModel dm = new SectionDataModel();

        dm.setHeaderTitle("Section " + i);

        ArrayList<SingleItemModel> singleItem = new ArrayList<SingleItemModel>();
        for (int j = 0; j <= 5; j++) {
            singleItem.add(new SingleItemModel("Item " + j, "URL " + j));
        }

        dm.setAllItemsInSection(singleItem);

        allSampleData.add(dm);//line which is causing issue

    }
  }

}

希望这会有所帮助:)

票数 0
EN

Stack Overflow用户

发布于 2018-04-23 05:54:54

在这里,您首先使用数组列表,然后声明它,这会导致问题。

如果您查看"onCreateView“函数,在创建"allSampleData”数组列表之前,您可以看到正在调用“allSampleData”函数,该数组列表在此函数中使用。

要解决这个问题,您只需在创建"createDumyData“数组列表之后调用"allSampleData”函数即可。

代码语言:javascript
复制
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
   // createDummyData();
    int[] images = {R.drawable.vancouver,R.drawable.party,R.drawable.hands_ip,R.drawable.dj};
    // Inflate the layout for this fragment
           allSampleData = new ArrayList<SectionDataModel>();

   createDummyData();  // after Array-list
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49974067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档