0

私はRecyclerViewとViewPagerを持つMenuActivityを持っています。このViewPagerには3つの異なるFragmentを使用する3つのページがあります。 FragmentOne、FragmentTwo、FragmentThree、これらのすべてのフラグメントはRecyclerViewデータを使用します。 3つの異なるArrayListをRecyclerViewアダプタで設定する必要があります。これは、Fragmentユーザーが表示しているものによって異なります。 3つのすべてのフラグメントにRecyclerViewを配置し、Fragmentに更新データを取得する方法が1つあります。私は、Fragmentが呼び出されたことに基づいてMenuActivityでアダプタデータを設定できるかどうかを知りたいだけです。Androidの単一RecyclerViewに異なるアダプタを設定する

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_menu, container, false); 
     recyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view); 
     itemList = new ArrayList<>(); 
     prepareMenuData(); 
     vegadapter = new MenuItemAdapter(getContext(),vegItemList); 
     nonvegadapter = new MenuItemAdapter(getContext(),nonvegItemList); 
     dessertAdapter = new MenuItemAdapter(getContext(),dessertItemList); 
     recyclerView.setAdapter(vegadapter); 
     RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext()); 
     recyclerView.setLayoutManager(layoutManager); 



     return rootView; 
    } 

prepareMenuData(); vegadapterを設定する際

 for (MenuItem item:itemList) 
     { 
      if(item.getCategory().equals("VEG")) 
      { 
       vegItemList.add(item); 
       vegadapter.notifyDataSetChanged(); 
      } 
      if(item.getCategory().equals("NONVEG")) 
      { 
       nonvegItemList.add(item); 
       nonvegadapter.notifyDataSetChanged(); 
      } 
      if(item.getCategory().equals("DESSERTVEG")) 
      { 
       dessertItemList.add(item); 
       dessertAdapter.notifyDataSetChanged(); 
      } 
     } 

このコードでは、提案してください nonvegadapterなど、知りません。 ありがとう ディープク

答えて

1

技術的には可能ですが、それは良いことが別の質問かどうかです。

各フラグメントにはRecyclerViewが必要ですが、アクティビティからアダプタのデータを取得できます。フラグメントは自分のアクティビティにアクセスできます。つまり、((MenuActivity) getActivity()).getMenuList();と呼ぶフラグメントからAndroidライフサイクルがどのように機能しているのかを確認し、結果をそのFragmentsアダプタに渡します。しかし、これは、良い練習ではない断片とアクティビティを結合します。

自分のデータが動的ではないように見えるという事実を考えれば、私は自分のMenuItemクラスがParcelableを実装するようにしています。次に、あなたのフラグメントを作成すると、MenuItemsのArrayListを引数としてあなたの断片はあなたの活動から独立しています。

関連する問題