@SimpleName

Можно ли загружать разные данные в recycler-view?

У меня есть фрагмент с двумя кнопками. Каждая из них сейчас ведет на фрагмент с recycler-view, однако надо сделать так, чтобы в recycler-view загружались разные данные в зависимости от выбранной кнопки. Можно ли это сделать с один фрагментом с recycler-view? Или нужно создавать второй для второй кнопки?
Код фрагмента с кнопками (сейчас вместо них использую картинки, но суть не меняется)
ых данных в recycler-view
Задать вопрос
0

У меня есть фрагмент с двумя кнопками. Каждая из них сейчас ведет на фрагмент с recycler-view, однако надо сделать так, чтобы в recycler-view загружались разные данные в зависимости от выбранной кнопки. Можно ли это сделать с один фрагментом с recycler-view? Или нужно создавать второй для второй кнопки?

Код фрагмента с кнопками (для простоты просто поставил клик на картинки)

    ImageView imageView = (ImageView) view.findViewById(R.id.menu_image);
    Glide.with(this).load(R.drawable.cutting_coupon).into(imageView);
    imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            TestFragment newFragment = new TestFragment();
            ((AppCompatActivity) imageView.getContext()).getSupportFragmentManager().beginTransaction()
                    .replace(R.id.content_frame, newFragment)
                    .addToBackStack(null)
                    .commit();
        }
    });

    ImageView imageView1 = (ImageView) view.findViewById(R.id.menu_image1);
    Glide.with(this).load(R.drawable.sale).into(imageView1);
    imageView1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            TestFragment newFragment = new TestFragment();
            ((AppCompatActivity) imageView.getContext()).getSupportFragmentManager().beginTransaction()
                    .replace(R.id.content_frame, newFragment)
                    .addToBackStack(null)
                    .commit();
        }
    });

Вот код фрагмента с recycler-view
public class TestFragment extends Fragment {

private ArrayList<GalleryGridObject> galleryList = new ArrayList<GalleryGridObject>();
private TestAdapter mAdapter;
private RecyclerView recyclerView;

public TestFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_test, container, false);

    recyclerView = (RecyclerView) view.findViewById(R.id.my_recycler_view);

    mAdapter = new TestAdapter(this, galleryList);
    LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setAdapter(mAdapter);

    recyclerView.setHasFixedSize(true);

    prepareGalleryData();

    return view;
}

private void prepareGalleryData()
{
    GalleryGridObject gallery = new GalleryGridObject(R.drawable.test);
    galleryList.add(gallery);

    gallery = new GalleryGridObject(R.drawable.test);
    galleryList.add(gallery);

    gallery = new GalleryGridObject(R.drawable.test);
    galleryList.add(gallery);

    gallery = new GalleryGridObject(R.drawable.test);
    galleryList.add(gallery);

    gallery = new GalleryGridObject(R.drawable.test);
    galleryList.add(gallery);

    gallery = new GalleryGridObject(R.drawable.test);
    galleryList.add(gallery);

    gallery = new GalleryGridObject(R.drawable.test);
    galleryList.add(gallery);

    gallery = new GalleryGridObject(R.drawable.test);
    galleryList.add(gallery);

    mAdapter.notifyDataSetChanged();
}

  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
@Wayloren
Можно. Гугли в сторону адаптера, там есть переопределяемый метод
public int getItemViewType(int position)
в котором можно определить тип возвращаемого элемента. Для каждого типа надо описать свой ViewHolder и затем в onBindViewHolder(final ViewHolder holder, final int position) биндить нужный (как видишь и тип и биндинг завязан на позицию)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы