查到笔者的博客已经说明各位读者实在是找不到RecyclerView的简单教程了吧,笔者将提供最基本,最明朗的RecyclerView教程,要求读者有一点点编程经验:
-
添加依赖,依赖有很多种,请根据自己的软件版本添加,也可以不添加试试看哈
-
在布局文件(即.xml文件)中添加RecyclerView的控件,并设置id
-
创建RecyclerView的实例化
final RecyclerView recyclerView = (RecyclerView)findViewById(R.id.布局文件中的id);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
为RecyclerView传入信息
recyclerView.setAdapter(一个Adapter);
这里传入的Adapter(适配器)就像是一个信息的压缩包,为了弥补RecyclerView不能自己读取数据的缺陷——接下来就是解释如何自己写一个压缩包
向adapter里传数据
final List<Map<String, Object>> listItems = new ArrayList<>();
for (int i=0; i<10; i++){
Map<String, Object> tmp = new LinkedHashMap<>();
tmp.put("东西A的name", 东西A);
tmp.put("first_letter", 东西B);
listItems.add(tmp);
final CommonAdapter adapter = new CommonAdapter<Map<String, Object>>(this, listItems, R.layout.摆放方法(即layout里的.xml文件)) {
@Override
public void convert(ViewHolder holder, Map<String, Object> s) {
TextView 控件 = holder.getView(R.id.控件的id);
控件.setText(s.get("name").toString());
自定义的adapter
1.在MainActivity.java同目录下新建立一个java文件,表示你要写的Adapter
2.写Adapter
时间紧迫,我就直接用中文在代码内部解释了,需要复制的话把中文都删除谢谢——建议先不写点击函数的功能,先把界面搭出来
首先要继承一个原来的Adapter的类,否则需要多写很多东西
public abstract class CommonAdapter<T> extends RecyclerView.Adapter<ViewHolder>{
private Context mContext;
private int mLayoutid;
private List<T> mDatas;
private OnItemClickListener monItemClickListener=null;
初始化函数,正是传入数据的函数,届时数据就从List<T>中传入
public CommonAdapter(Context context, List<T> datas, int layoutid){
this.mContext = context;
this.mLayoutid = layoutid;
this.mDatas = datas;
这里需要一个自定义的ViewHoder,先写,再说
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
ViewHolder viewHolder = ViewHolder.get(mContext, parent, mLayoutid);
return viewHolder;
为了设置点击的效果
不点击可以不写,保留内部为空即可,声明还是要有的
有一个陌生的函数,convert——后面会写,
@Override
public void onBindViewHolder(final ViewHolder holder, int position){
convert(holder, mDatas.get(position));
if(monItemClickListener != null){
holder.itemView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
monItemClickListener.onClick(holder.getAdapterPosition());
holder.itemView.setOnLongClickListener(new View.OnLongClickListener(){
@Override
public boolean onLongClick(View v) {
monItemClickListener.onLongClick(holder.getAdapterPosition());
return true;
@Override
public int getItemCount(){
return mDatas.size();
public abstract void convert(ViewHolder holder, T position);
点击函数,不点击可以不写
public interface OnItemClickListener{
void onClick(int position);
void onLongClick(int position);
public void setOnItemClickListener(OnItemClickListener onItemClickListener){
monItemClickListener = onItemClickListener;
public void removeItem(int position){
if(position >= 0){
mDatas.remove(position);
notifyItemRemoved(position);
3.之前说的ViewHolder,最好写上,因为我们在传入数据的时候,需要内部的一个函数get
public class ViewHolder extends RecyclerView.ViewHolder {
private SparseArray<View> mViews;
private View mConvertView;
public ViewHolder(Context context, View itemview, ViewGroup parent){
super(itemview);
mConvertView = itemview;
mViews = new SparseArray<View>();
public static ViewHolder get(Context context, ViewGroup parent, int layoutid){
View itemview = LayoutInflater.from(context).inflate(layoutid, parent, false);
ViewHolder holder = new ViewHolder(context, itemview, parent);
return holder;
public <T extends View> T getView(int viewid){
View view = mViews.get(viewid);
if(view == null){
view = mConvertView.findViewById(viewid);
mViews.put(viewid, view);
return (T)view;
方法就介绍到这里,源代码可以贴上来,详见GitHub
https://github.com/AllLiving/Android_lab/tree/master/Shopping
查到笔者的博客已经说明各位读者实在是找不到RecyclerView的简单教程了吧,笔者将提供最基本,最明朗的RecyclerView教程,要求读者有一点点编程经验:添加依赖,依赖有很多种,请根据自己的软件版本添加,也可以不添加试试看哈在布局文件(即.xml文件)中添加RecyclerView的控件,并设置id创建RecyclerView的实例化final RecyclerView recyc
在Android开发中,会经常用到RecyclerView来显示数据,数据的绑定使用到Adapter,原声的Adapter需要些很多重复代码,今天写了一个通用的代码来实现适配器绑定数据,减少代码量。
通用Adapter的功能:
1、FooterView和headerView的显示
2、停止滚动屏幕,再去加载数据
下面是代码的详解:
1、通用的ViewHolderpublic class R
布局文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/ap
想要添加headerView需通过自定义RecyclerView.Adapter,并通过控制Adapter的itemType来实现,在在此之前你需要有基本的自定义Adapter的基础。
本文通过俩个步骤来学习如何为Adapter添加一个HeaderView。
简单的过下RecyclerView设计思想,分清其中各个角色关系(了解过的可以跳过这一步)。
学习自定义Adapter的基...
Python numpy Import Error Something is wrong with the numpy installation. an older
金焱111: