本来没打算写这个的 最近一直忙于学习理论没有敲代码 今天突然想敲一个最简单的适配器 居然发现 不会写了!!!
好吧 我要记下来
RecyclerView是需要导依赖的
implementation 'com.android.support:recyclerview-v7:28.0.0-alpha3'//RecyclerView
当然 布局没忘 但还是记一下
<android.support.v7.widget.RecyclerView
android:id="@+id/mRecycler"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
加适配器前需要先写一个布局 布局内容我就不贴了 我就放了两张图
下面是适配器代码
package com.example.lin.myapplication;
import android.content.Context;
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 com.bumptech.glide.Glide;
import java.util.ArrayList;
//这个地方本来是(extends RecyclerView.Adapter<RecyclerView.ViewHolder>)后来我用类名把他换掉了 这样替换了三处报错的三处 然后viewholder就会自动继承了
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
private Context context;
private ArrayList<UserBean.ResultBean.DataBean> mList;
public RecyclerAdapter(Context context, ArrayList<UserBean.ResultBean.DataBean> mList) {
this.context = context;
this.mList = mList;
}
@NonNull
@Override
public RecyclerAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
//导入布局
View inflate = LayoutInflater.from(context).inflate(R.layout.layout, viewGroup, false);
//一键生成viewHoler(Crtl+Insert:layoutCreator)
ViewHolder viewHolder = new ViewHolder(inflate);
//正常写的话这里是会报错的 需要让下边自动生成的viewholder(extends RecyclerView.ViewHolder)就好了
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerAdapter.ViewHolder viewHolder, int i) {
//取出值赋值
String thumbnail_pic_s = mList.get(i).getThumbnail_pic_s();
String thumbnail_pic_s02 = mList.get(i).getThumbnail_pic_s02();
Glide.with(context).load(thumbnail_pic_s).into(viewHolder.mImageA);
Glide.with(context).load(thumbnail_pic_s02).into(viewHolder.mImageB);
}
@Override
public int getItemCount() {
//集合长度==显示条目
return mList.size();
}
//这是一件生成的
public static class ViewHolder extends RecyclerView.ViewHolder {
public View rootView;
public ImageView mImageA;
public ImageView mImageB;
public ViewHolder(View rootView) {
super(rootView);
this.rootView = rootView;
this.mImageA = (ImageView) rootView.findViewById(R.id.mImageA);
this.mImageB = (ImageView) rootView.findViewById(R.id.mImageB);
}
}
}
当然还需要一个网址 这里是我申请的一个网址 新闻类的挺好用
http://v.juhe.cn/toutiao/index?type=top&key=21430787d2adc55bb5781374e57246da
然后生成一个bean类 (建一个class然后Alt+s自动生成)这个我不详细写了 代码量多自动生成意义不大
然后在Activitry中调用适配器
private void initAdapter() {
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
mRecycler.setLayoutManager(layoutManager);
RecyclerAdapter adapter = new RecyclerAdapter(this, mList);
mRecycler.setAdapter(adapter);
}
基本就是这了 剩下的网络解析太长了 这里就不提了