效果图
代码
封装类
package com.example.day007.base;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.SparseArray;
import android.view.View;
import android.widget.TextView;
import com.example.day007.R;
public class Baseholder extends RecyclerView.ViewHolder {
//用来存行布局中的控件
SparseArray<View> array=new SparseArray<>();//效率高的集合
public Baseholder(@NonNull View itemView) {
super(itemView);
}
//从容器中取控件
public View getView(int id){
View v = null;
v=array.get(id);//从集合中根据id取控件
if (v==null){//容器中没有这个控件
v = itemView.findViewById(id);
array.put(id,v);
}
return v;
}
}
适配器类
package com.example.day007.base;
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 java.util.ArrayList;
public abstract class Baseadpater<T> extends RecyclerView.Adapter<Baseholder> {
private Context context;//上下文对象
private ArrayList<T> data;//这个是数据源
public Baseadpater(Context context, ArrayList<T> data) {
this.context = context;
this.data = data;
}
public abstract int getlayoutid();//必须让子类重写,重写的时候给我一个具体布局的id item_layout.xml
@NonNull
@Override
public Baseholder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(context).inflate(getlayoutid(),null);
return new Baseholder(v);
}
@Override
public void onBindViewHolder(@NonNull Baseholder baseholder, int i) {
bangding(baseholder,i);
}
public abstract void bangding(Baseholder baseholder, int i);
@Override
public int getItemCount() {
return data.size();
}
}
继承适配器的适配器
package com.example.day007.base;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.day007.R;
import java.util.ArrayList;
public class Firstadpater extends Baseadpater<Integer>{
private Context context;
private ArrayList<Integer> strings;
private ArrayList<String> strings2;
public Firstadpater(Context context, ArrayList<Integer> data,ArrayList<String> strings2) {
super(context, data);
this.context = context;
this.strings = data;
this.strings2=strings2;
}
@Override
public int getlayoutid() {
return R.layout.item_layout;
}
@Override
public void bangding(Baseholder baseholder, int i) {
//找到控件 //赋值
ImageView imageView= (ImageView) baseholder.getView(R.id.text);//类型转换
imageView.setImageResource(strings.get(i));
TextView textView= (TextView) baseholder.getView(R.id.img);
textView.setText(strings2.get(i));
}
}
行布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text"
/>
<TextView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
activity布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".base.Main2Activity">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycle"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
</LinearLayout>
activity代码
package com.example.day007.base;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.LinearLayout;
import com.example.day007.MainActivity;
import com.example.day007.R;
import java.util.ArrayList;
import java.util.List;
public class Main2Activity extends AppCompatActivity {
private RecyclerView recycle;
private ArrayList<Integer> list = new ArrayList<>();
private ArrayList<String> list2 = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
recycle = (RecyclerView) findViewById(R.id.recycle);
list.add(R.mipmap.a);
list.add(R.mipmap.b);
list.add(R.mipmap.c);
list.add(R.mipmap.d);
list2.add("智慧");
list2.add("智慧");
list2.add("智慧");
list2.add("智慧");
Firstadpater firstadpater = new Firstadpater(this,list,list2);
LinearLayoutManager manager=new LinearLayoutManager(this);
recycle.setLayoutManager(manager);
recycle.setAdapter(firstadpater);
}
}