内容简介:声明:原创作品,转载请注明出处:RecyclerView是用于列表展示的控件,对于小白来说,是比较难使用的,下面,我将对它的最基本使用方式进行讲解。这一篇,我讲解了RecyclerView的基本使用方式,下一篇,我会讲解如何在RecyclerView中使用不同的布局。
声明:原创作品,转载请注明出处: www.jianshu.com/p/5525310c0…
RecyclerView是用于列表展示的控件,对于小白来说,是比较难使用的,下面,我将对它的最基本使用方式进行讲解。
- 步骤:
- 添加Recyclerview依赖。
- 在xml文件中添加Recyclerview控件。
- 创建Recyclerview的Adapter(适配器)。
- 将适配器设置给Recyclerview。
一、添加Recyclerview依赖
- 在模块的build.gradle中的dependencies{}中添加如下代码:
implementation 'com.android.support:recyclerview-v7:28.0.0' 复制代码
二、在xml文件中添加Recyclerview控件
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>
复制代码
三、创建Recyclerview的Adapter(适配器)
- 步骤:
- 创建RecyclerView.Adapter类的子类,泛型传入RecyclerView.ViewHolder类。
- 创建RecyclerView.ViewHolder类的子类。
- 在RecyclerView.ViewHolder的子类中初始化item的控件。
- 重写RecyclerView.Adapter类的相关方法。
package com.liuym.myapplication;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
public class RvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
//数据源
private List<Data> mList;
public RvAdapter(List<Data> list) {
mList = list;
}
/**
* 创建ViewHolder
*
* @param viewGroup
* @param i
* @return
*/
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View item = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_rv, viewGroup, false);
RecyclerView.ViewHolder holder = new MyViewHolder(item);
return holder;
}
/**
* 通过ViewHolder对item中的控件进行控制(如:显示数据等等)
*
* @param viewHolder
* @param i
*/
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
MyViewHolder holder = (MyViewHolder) viewHolder;
Data data = mList.get(i);
holder.iv.setImageResource(R.drawable.ic_launcher_background);
holder.tv.setText(data.getText());
}
/**
* 返回列表长度
*
* @return
*/
@Override
public int getItemCount() {
return mList == null ? 0 : mList.size();
}
/**
* 创建ViewHolder类,用来缓存item中的子控件,避免不必要的findViewById
*/
class MyViewHolder extends RecyclerView.ViewHolder {
ImageView iv;
TextView tv;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
iv = itemView.findViewById(R.id.iv);
tv = itemView.findViewById(R.id.tv);
}
}
}
复制代码
四、将适配器设置给Recyclerview
private void initRv() {
List<Data> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
String text = String.format("mockData: %1s", i);
list.add(new Data(text));
}
RecyclerView recyclerView = findViewById(R.id.rv);
RvAdapter adapter = new RvAdapter(list);
recyclerView.setAdapter(adapter);
}
复制代码
总结
这一篇,我讲解了RecyclerView的基本使用方式,下一篇,我会讲解如何在RecyclerView中使用不同的布局。
系列文章
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First Rails
David Griffiths / O'Reilly Media / 2008-12-30 / USD 49.99
Figure its about time that you hop on the Ruby on Rails bandwagon? You've heard that it'll increase your productivity exponentially, and allow you to created full fledged web applications with minimal......一起来看看 《Head First Rails》 这本书的介绍吧!