1.线性布局
//管理类
recy.setLayoutManager(new LinearLayoutManager(getContext()));
recy.setAdapter(adapter);
2.适配器
public class XianAdapter extends RecyclerView.Adapter<XianAdapter.ViewHolder>implements View.OnClickListener {
private Context mContext;
private ArrayList<MyData.DataBean> mList;
public XianAdapter(Context mContext, ArrayList<MyData.DataBean> mList) {
this.mContext = mContext;
this.mList = mList;
}
//加载总布局
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = View.inflate(mContext, R.layout.xian_item, null);
ViewHolder holder = new ViewHolder(view);
view.setOnClickListener(this);
return holder;
}
//把数据绑定到视图上
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
viewHolder.mname.setText(mList.get(i).getName());
viewHolder.itemView.setTag(i);
}
@Override
public int getItemCount() {
return mList.size();
}
//初始化控件
public class ViewHolder extends RecyclerView.ViewHolder {
private TextView mname;
public ViewHolder(@NonNull View itemView) {
super(itemView);
mname = itemView.findViewById(R.id.tv);
}
}
public interface OnItemClick{
void onItemClick(View view,int position);
}
private OnItemClick onItemClick;
public void setOnItemClick(OnItemClick itemClick){
this.onItemClick=itemClick;
}
@Override
public void onClick(View v) {
if(onItemClick!=null){
onItemClick.onItemClick(v,(int)v.getTag());
}
}
}
3.表格布局
//管理
GridLayoutManager manager=new GridLayoutManager(getContext(),3);
recy.setLayoutManager(manager);
适配器和线性一样
4.瀑布流
//管理类
StaggeredGridLayoutManager manager=new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
recy.setLayoutManager(manager);
5.适配器
public class StagAdapter extends RecyclerView.Adapter<StagAdapter.ViewHolder> {
private Context mContext;
private ArrayList<MyData.DataBean> mList;
public StagAdapter(Context mContext, ArrayList<MyData.DataBean> mList) {
this.mContext = mContext;
this.mList = mList;
}
@NonNull
@Override
public StagAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(mContext).inflate(R.layout.stag_item, viewGroup, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull StagAdapter.ViewHolder viewHolder, int i) {
MyData.DataBean dataBean = mList.get(i);
ViewGroup.LayoutParams params = viewHolder.itemView.getLayoutParams();
Random random = new Random();
int height = random.nextInt(300) + 300;
params.height=height;
viewHolder.itemView.setLayoutParams(params);
//图片赋值
Glide.with(mContext).load(mList.get(i).getIcon()).into(viewHolder.img);
}
@Override
public int getItemCount() {
return mList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private ImageView img;
public ViewHolder(@NonNull View itemView) {
super(itemView);
img = itemView.findViewById(R.id.imgview);
}
}
}
6.多条目
//管理者
LinearLayoutManager manager=new LinearLayoutManager(getContext());
mRecy.setLayoutManager(manager);
7.适配器
public class DuoTMAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private ArrayList<MyData.DataBean> mList;
private Context mContext;
private final int ONE = 1;
private final int TWO = 2;
public DuoTMAdapter(ArrayList<MyData.DataBean> mList, Context mContext) {
this.mList = mList;
this.mContext = mContext;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = null;
RecyclerView.ViewHolder holder = null;
switch (i) {
case ONE:
view = View.inflate(viewGroup.getContext(), R.layout.one_item, null);
holder=new OneHolder(view);
break;
case TWO:
view = View.inflate(viewGroup.getContext(), R.layout.two_item, null);
holder=new TwoHolder(view);
break;
}
return holder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
MyData.DataBean dataBean = mList.get(i);
if(viewHolder instanceof OneHolder){
((OneHolder)viewHolder).mName.setText(dataBean.getName());
}else{
Glide.with(mContext).load(dataBean.getIcon()).into(((TwoHolder)viewHolder).mImg);
}
viewHolder.itemView.getTag(i);
}
@Override
public int getItemCount() {
return mList.size();
}
@Override
public int getItemViewType(int position) {
if (position % 2 == 1) {
return ONE;
} else {
return TWO;
}
}
class OneHolder extends RecyclerView.ViewHolder{
private TextView mName;
public OneHolder(@NonNull View itemView) {
super(itemView);
mName=itemView.findViewById(R.id.One_Text);
}
}
class TwoHolder extends RecyclerView.ViewHolder{
private ImageView mImg;
public TwoHolder(@NonNull View itemView) {
super(itemView);
mImg=itemView.findViewById(R.id.Two_Image);
}
}
}