RecyclerView的实现(小白进阶路 “单条目,单视图”)

Impl (build.gradle文件)

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

布局基础(显示视图.xml

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

条目显示(item.xml)

<LinearLayout 
    android:layout_width="match_parent"
    //条目高包裹内容
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    
    <TextView
        android:id="@+id/ID自拟"
        style="@style/复用style"
        //预览用
        android:text="@string/app_name"/>
        
</LinearLayout>

复用属性(styles.xml)

 <style name="Common" >
	    //视图宽高
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_width">match_parent</item>
        //字体
        <item name="android:textSize">25sp</item>
        //文本位置
        <item name="android:gravity">center</item>

    </style>

JAVA代码(MainActivity.java)

1.获得控件

 private RecyclerView mRecyclerList;

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

    private void initView() {
        mRecyclerList =  findViewById(R.id.list);
    }

2.简单的设置一下数据

   ArrayList<String> mList = new ArrayList<>();
        for (int i = 0; i <100 ; i++) {
            mList .add(i+"");
        }

3.RecyclerView要设置布局管理(setLayoutManager)
(1)常用类型

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this,2);
gridLayoutManager.setOrientation(GridLayoutManager.VERTICAL);
StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(4, OrientationHelper.VERTICAL);
staggeredGridLayoutManager.setOrientation(StaggeredGridLayoutManager.VERTICAL);

(2)设置

  mRecyclerList .setLayoutManager(布局管理器name);

4.RecyclerView的适配器设置

(1)基础设置

 //GoodsAdapter 临时创建的适配器类
 GoodsAdapter 适配器name = new GoodsAdapter(当前视图(this), 数据name(mList);
 mRecyclerList .setAdapter(适配器name);

(2) GoodsAdapter 中继承RecyclerView.Adapter<内容ViewHolder>

1.先将ViewHolder类实现

 class MyViewHolder extends RecyclerView.ViewHolder{
        TextView textView;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.text);
        }
    }

2.将继承方法实现

GoodsAdapter extends RecyclerView.Adapter<GoodsAdapter.MyViewHodler> {
	//要用到的属性
    private Context context;
    private ArrayList<String> mAlist;
    public GoodsAdapter(Context context, ArrayList<String> mAlist) {
        this.context = context;
        this.mAlist= mAlist;
    }
   //三个最基础的方法
    @NonNull
    @Override
    public MyViewHodler onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        return null;
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHodler myViewHodler, int i) {

    }

    @Override
    public int getItemCount() {
        return 0;
    }
 }

3.关联ViewHolder

 @NonNull
 @Override
 public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
 //viewGroup.getContext()==context
        View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_goods(条目视图xml),viewGroup,false);
        MyViewHolder myViewHolder = new MyViewHolder(itemView);
        return myViewHolder;
 }

4.绑定onBindViewHolder (List数据)

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
        String s = mAlist.get(i);
        //非空判断操作
        if (!TextUtils.isEmpty(s)) {
            myViewHolder.textView.setText(s);
        }else {
            myViewHolder.textView.setText("");
        }
     }

5.条目数量方法的设置(getItemCount)

    @Override
    public int getItemCount() {
        //三元运算符的判断返回参数
        return mAlist==null ? 0:mAlist.size();
    }

6.优化有参构造

 private List<String> listData = new ArrayList<>();

 public GoodsAdapter(Context context, List mAlist) {
        this.context = context;
        if (mAlist!=null&&mAlist.size()>0) {
            this.mAlist.addAll(mAlist);
        }
    }

此时运行代码便会看到效果了

在这里插入图片描述

**只是初步实现一个特别简单的RecyclerView,勿喷 **

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值