RecylerView的三种模式线性、网格、瀑布流

首先引入RecylerView的依赖

 implementation 'com.android.support:recyclerview-v7:28.0.0'

在布局里引入RecylerView 这里注意必须是v7包下的

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/recylerView"/>

在Activity中找到控件

 recyer = (XRecyclerView) findViewById(R.id.recyler);

设置管理器
1.线性样式

	  //设置布局管理器LinearLayoutManager是线性
  LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
	 // seto  LinearLayoutManager 里的参数VERTICAL设置垂直滑动   HORIZONTAL是水平
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
 //吧实行赋给recyer控件
  recyer.setLayoutManager(linearLayoutManager);

2.网格样式

      //设置网格管理器
    //传一个上下文 一个列数
     GridLayoutManager gridLayoutManager = new GridLayoutManager(this,3);
    recyer.setLayoutManager(gridLayoutManager);

3.瀑布流样式

    // 瀑布流 管理器  数据长度不一样长就可以错开
    //传  一个列数 一个方向
    StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
    recyer.setLayoutManager(staggeredGridLayoutManager);

设置好管理器之后 定义适配器

public class MyAdapter1 extends RecyclerView.Adapter<MyAdapter1.MyViewHorder1> {
private Context context;
private List<String> list;
private OnItemClickLintener linter;

public MyAdapter1(Context context, List<String> list) {
    this.context = context;
    this.list = list;
}

@NonNull
@Override
public MyViewHorder1 onCreateViewHolder(@NonNull ViewGroup viewGroup, final int i) {
    //引入布局
    View view = View.inflate(context, R.layout.layout_item2, null);
    MyViewHorder1 myViewHorder1 = new MyViewHorder1(view);
    myViewHorder1.te2 = view.findViewById(R.id.te2);
    myViewHorder1.img2 = view.findViewById(R.id.img2);
    myViewHorder1.lin = view.findViewById(R.id.item2);
    return myViewHorder1;
}

//给控件赋值
@Override
public void onBindViewHolder(@NonNull MyViewHorder1 myViewHorder1, final int i) {
    myViewHorder1.te2.setText(list.get(i));
    myViewHorder1.img2.setImageResource(R.drawable.hh1);
    //设置整个自定义条目的点击事件
    myViewHorder1.lin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //调用接口  去下面定义一个
            linter.onItem(i);
        }
    });
}

@Override
public int getItemCount() {
    return list.size();
}

//viewhorder
public class MyViewHorder1 extends RecyclerView.ViewHolder {
    public MyViewHorder1(@NonNull View itemView) {
        super(itemView);
    }

    //找到控件
    public TextView te2;
    public ImageView img2;
    public LinearLayout lin;
}

**//传递接口**
public void setOnItemClickLinter(OnItemClickLintener linter) {
    this.linter = linter;
}

**//自定义点击事件的  接口**
public interface OnItemClickLintener {
    void onItem(int po);
}

}

**设置适配器 **

//实例化适配器
    myAdapter1 = new MyAdapter1(ShowActivity.this, list1);
    //设置适配器
    recylerview2.setAdapter(myAdapter1);

这是点击事件的回调

 //设置条目点击事件\
    myAdapter1.setOnItemClickLinter(new MyAdapter1.OnItemClickLintener() {
        @Override
        public void onItem(int po) {
            Toast.makeText(ShowActivity.this, "您点击了第" + po + "条", Toast.LENGTH_SHORT).show();
            //点击删除
            removeData(po);
        }
    });

猜你喜欢

转载自blog.csdn.net/qq_43143981/article/details/83660768