RecyclerView分类

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);
    }
}

}

猜你喜欢

转载自blog.csdn.net/qq_43603325/article/details/85039858