我想要使用一个RecyclerView网格项目,以便在位置一显示2个项目并排,在位置2它应该显示1项目。
这是我的适配器类代码;它在2列显示网格项目,但我需要在下面的图像。
MainFragment.classRecylerView多布局
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);
}
}
}
我需要循环应该到重复的项目,如位置1个2 coloumns和下一个科拉姆的未来2未来1 ..... – vishnu
正数,并且根据你的逻辑,你在发送什么类型的getViewType(), –