Android studio RecycleView 的简单使用

260 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

RecycleView 的简单使用

RecyclerView是Android一个更强大的控件,他的出现替代了 ListView 和 GridView。其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。RecyclerView可以自定义布局管理器来决定item的排布规则 如下;

LinearLayoutManager、GridLayoutManager、StaggeredGridLayoutManager 等。

可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。

效果图

在这里插入图片描述

RecyclerView的用法

1.在Gradle添加RecyclerView的依赖

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

2.activity_main.xml中的代码

  <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="3">

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="序号" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="名字" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="动作" />

    </LinearLayout>

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycleview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

2.Person实体类 源码中有

3.RecyclerAdapter适配器

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
   private List<Person> PersonList;

   public RecyclerAdapter(List<Person> PersonList)
   {
       this.PersonList = PersonList;
   }

   @NonNull
   @Override
   public RecyclerAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
       View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
       ViewHolder viewHolder = new ViewHolder(itemView);
       return viewHolder;
   }

   @Override
   public void onBindViewHolder(@NonNull RecyclerAdapter.ViewHolder holder, int position) {
       holder.id.setText(String.valueOf(PersonList.get(position).getId()));
       holder.name.setText(PersonList.get(position).getName());
       holder.action.setText(PersonList.get(position).getAction());
   }

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

   //定义接口 有参数的点击事件
   public interface OnItemClickListener{
       void onClick(int position);
   }

   private OnItemClickListener listener;
   public void setOnItemClickListener(OnItemClickListener listener){
       this.listener=listener;
   }


   class ViewHolder extends RecyclerView.ViewHolder {
       TextView id;
       TextView name;
       TextView action;

       public ViewHolder(@NonNull View itemView)
       {
           super(itemView);
           this.id= itemView.findViewById(R.id.tv_id);
           this.name= itemView.findViewById(R.id.tv_name);
           this.action= itemView.findViewById(R.id.tv_action);
       }

   }
}

MainActivity 代码

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private RecyclerAdapter recyclerAdapter;
    private List<Person> personList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initData();
        initView();
    }

    //添加数据
    private void initData() {
        personList=new ArrayList<>();
        personList.add(new Person(1,"anmin","敲代码"));
        personList.add(new Person(2,"张三","出差"));
        personList.add(new Person(3,"join","吃饭"));
        personList.add(new Person(4,"李四","睡觉"));
        personList.add(new Person(5,"jack","打豆豆"));
    }
    //初始化
    private void initView(){
        recyclerView = findViewById(R.id.recycleview);
        // 线性布局管理器
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(linearLayoutManager);
        //网格布局加载器
       /* StaggeredGridLayoutManager manager=new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL);
        manager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);//防止滑动时跳动*/
        //适配器
        recyclerAdapter = new RecyclerAdapter(personList);
        recyclerView.setAdapter(recyclerAdapter);
    }
}

以上就是整个recycleview的流程

下面是源码地址 链接: link.