Я пытаюсь использовать элемент сетки RecyclerView, так что в позиции 1 он отображает 2 элемента бок о бок, в позиции 2 он должен отображать 1 элемент.
Вот мой код класса адаптера; он отображает элементы сетки на 2 столбца, но мне нужно, как на изображении ниже.
MainFragment.classМногократная компоновка в RecylerView
public class MoviesFragment extends Fragment {
private MoviesAdapter mAdapter;
private RecyclerView mRecyclerView;
RecyclerView.LayoutManager mLayoutManager;
public MoviesFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootview= inflater.inflate(R.layout.fragment_movies, container, false);
mRecyclerView = (RecyclerView)rootview.findViewById(R.id.list);
mRecyclerView.setHasFixedSize(true);
// The number of Columns
mLayoutManager = new GridLayoutManager(getActivity(), 2);
mRecyclerView.setLayoutManager(mLayoutManager);
mAdapter = new MoviesAdapter(Arrays.asList(
new CardViewData("hdh", "Direction pp", R.drawable.arya_movie),
new CardViewData("jdjd", "Description of Item 1", R.drawable.julaie),
new CardViewData("hdhd", "Description of Item 2", R.drawable.badrinadg),
new CardViewData("hdhd", "Description of Item 3", R.drawable.happy),
new CardViewData("hdhd", "Description of Item 4", R.drawable.julai),
new CardViewData("hdhd", "Direddctor : sahs", R.drawable.vedam_movie)));
mRecyclerView.setAdapter(mAdapter);
return rootview;
}
}
Вот мой адаптер класс:
MovieAdapter.class
public class MoviesAdapter extends RecyclerView.Adapter<MoviesAdapter.ViewHolder> {
private List<CardViewData> mDataset;
public MoviesAdapter(List<CardViewData> dataset) {
mDataset = dataset;
}
@Override
public ViewHolder onCreateViewHolder(final ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.moview_card_layout, viewGroup, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(final ViewHolder viewHolder, int i) {
final CardViewData cardViewData = mDataset.get(i);
viewHolder.mTitle.setText(cardViewData.getTitle());
viewHolder.mDescription.setText(cardViewData.getDescription());
viewHolder.mImage.setImageResource(cardViewData.getImage());
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "Title: " + cardViewData.getTitle(), Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
return mDataset == null ? 0 : mDataset.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView mTitle;
public TextView mDescription;
public ImageView mImage;
public ViewHolder(View itemView) {
super(itemView);
mTitle = (TextView) itemView.findViewById(R.id.row_title);
mDescription = (TextView) itemView.findViewById(R.id.row_description);
mImage = (ImageView) itemView.findViewById(R.id.row_image);
}
}
}
мне нужно, что цикл должно повторять п число элементов, такие как положение-2 coloumns и каждого следующего Colum следующего 2 следующего 1 ..... – vishnu
И оно основано на вашем логика, какой тип вы отправляете в getViewType(), –