RecyclerView

A flexible view for providing a limited window into a large data set.用于大量数据展示的新控件

在使用RecyclerView时候,必须指定一个适配器Adapter和一个布局管理器LayoutManager

基本使用

1.创建布局文件

Item的布局文件

 

 

Activity布局文件

 

 

 

 

 

 

 

 

2.创建适配器 

创建Adapter:创建一个继承RecyclerView.Adapter<VH>的Adapter类

package com.sankuai.activitytest.recylerview;

import android.content.Context;
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 android.widget.Toast;

import com.sankuai.activitytest.R;

import java.util.List;

/**
* Created by lijing81 on 2019/3/11.
*/

public class LinearAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

private Context mContext;
private OnItemClickListener mListener;

// Adatper构造方法

public LinearAdapter(Context context,OnItemClickListener listener){

this.mContext=context;
this.mListener=listener;
}



// 继承RecyclerView的ViewHolder后需要完善的方法
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

// item的layout关联上

if(viewType==0){
return new LinearViewHolder(LayoutInflater.from(mContext).inflate(R.layout.layout_linear_item,parent,false));
}
else{
return new LinearViewHolder2(LayoutInflater.from(mContext).inflate(R.layout.layout_linear_item_2,parent,false));

}

// return null;
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
if(getItemViewType(position)==0){
((LinearViewHolder)holder).textView.setText("Hello World");
}
else {
((LinearViewHolder2)holder).textView.setText("你妹啊");

}
// 设置textView的文案

holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mListener.onClick(position);
}
});
}

@Override
// 设置数量
public int getItemCount() {
return 30;
}

@Override
public int getItemViewType(int position) {
if(position %2 ==0){
return 0;
}
else {
return 1;
}
// return super.getItemViewType(position);
}

//自定义ViewHolder类,继承RecyclerView的ViewHolder
class LinearViewHolder extends RecyclerView.ViewHolder{

private TextView textView;

//ViewHolder构造方法

public LinearViewHolder(View itemView) {

super(itemView);
// 把layout_linear_item的TextView绑定
textView=itemView.findViewById(R.id.tv_title);


}
}
class LinearViewHolder2 extends RecyclerView.ViewHolder{

private TextView textView;
private ImageView imageView;

//ViewHolder构造方法

public LinearViewHolder2(View itemView) {

super(itemView);
// 把layout_linear_item的TextView绑定
textView=itemView.findViewById(R.id.tv_title);
imageView=itemView.findViewById(R.id.tv_image);


}
}
//定义一个点击的接口
public interface OnItemClickListener{
void onClick(int pos);
}
}

创建ViewHolder:在Adapter中创建一个继承RecyclerView.ViewHolder的静态内部类,可创建多个(绿色和橙色)
在Adapter中实现3个方法:
onCreateViewHolder()
onBindViewHolder()
getItemCount()

RecyclerView的组成:


 

转载于:https://www.cnblogs.com/AppTester/p/11442401.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值