一个关于RecyclerView简单的Demo

第一步先导入依赖:

implementation'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

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

</RelativeLayout>

text_item:

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

    <TextView
        android:id="@+id/text"
        android:gravity="center"
        android:text="测试"
        android:textSize="50dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

MainActivity:

package com.mao.reclcerview;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    /**
     * 数据:list
     * 主体:recyclerView
     * 适配器:adapter
     */

    List<String> list = new ArrayList<>();
    RecyclerView recyclerView;
    RecyclerDomeAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initText();
        //初始化 主体(recyclerView)
        recyclerView = findViewById(R.id.recycler_View);

        //初始化适配器(adapter)
        adapter = new RecyclerDomeAdapter(this,list);

        //配置Layoutmanger
        /**
         * recyclerView的花样全在这里,横向、纵向、各种花式布局,都是从这里来的
         * 我下面,就是做简单的纵向列表,根据自己需要选择不同layoutManager
         * 具体有哪些layoutManager
         */
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);//加上这句,就可以设置方向
        recyclerView.setLayoutManager(layoutManager);
        //配置adapter
        recyclerView.setAdapter(adapter);


        /**
         * 如果列表数据更新了
         * 调用这个方法,传入新的list就ok了
         */
        //recyclerView.updateViewLayout();
    }
    private void initText(){
        for (int i = 0; i < 2 ; i++){
            list.add("zhang");
            list.add("li");
            list.add("wu");
            list.add("liu");
            list.add("sun");
            list.add("zheng");
            list.add("ming");
            list.add("qi");
            list.add("ji");
            list.add("gao");
            list.add("hao");
        }
    }
}

Text:

package com.mao.reclcerview;

/**
 * Author:流浪猫
 * Date:2020/7/9
 */
public class Text {
    private String t;

    public Text() {
    }

    public Text(String t) {
        this.t = t;
    }

    public String getT() {
        return t;
    }

    public void setT(String t) {
        this.t = t;
    }
}

RecyclerDomeAdapter:

package com.mao.reclcerview;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

/**
 * Author:流浪猫
 * Date:2020/7/9
 */

//RecyclerView.Adapter 是一个抽象类,并且支持泛型
public class RecyclerDomeAdapter extends RecyclerView.Adapter<RecyclerDomeAdapter.MyHolder> {

    Context context;
    List<String> list;

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

    public void updata(List<String> list){
        this.list = list;
        notifyDataSetChanged();
    }

    /**
     * onCreateViewHolder 为注册 item
     * 这个方法是用来创建viewholder的
     * 就是引入xml传送给viewholder的
     * ViewGroup parent:可以简单理解为item的根ViewGroup,item的子控件加载在其中
     * int viewType:item的类型,可以根据viewType来创建不同的ViewHolder,来加载不同的类型的item
     */
    @Override
    public MyHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.text_item,parent,false);
        MyHolder myHolder = new MyHolder(view);
        return myHolder;
    }

    /**
     * 这里,是操作item的地方
     * onBindViewHolder 给Item元素赋值
     */
    @Override
    public void onBindViewHolder(@NonNull MyHolder holder, int position) {
        String s = list.get(position);
        holder.textView.setText(s);
        //对控件进行监听
        holder.textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });

        //对整个item进行监听
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });
    }

    /**
     * getItemCount 返回Item个数
     */
    @Override
    public int getItemCount() {
        return list.size();
    }

    /**
     * 这个ViewHolder是用来初始化控件的
     */

    class MyHolder extends RecyclerView.ViewHolder {
        TextView textView;

        public MyHolder(View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.text);
        }
    }
}

项目实现:
可以下拉

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值