Recyclerview的封装
简单对一个textview的封装
package com.example.qq2;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.SparseArray;
import android.view.View;
import android.widget.TextView;
public class baseview extends RecyclerView.ViewHolder {
SparseArray<View> sparseArray = new SparseArray<>();
public baseview(@NonNull View itemView) {
super(itemView);
}
public View getview(int id){
View view = null;
view= sparseArray.get(id);
if(view==null){
view= itemView.findViewById(id);
sparseArray.put(id,view);
}
return view;
}
public void gettext(int id,String text){
TextView textView = (TextView) getview(id);
if(textView!=null){
textView.setText(text);
}
}
}
BaseRecyclerViewAdapter的封装
package com.example.day2;
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 base<T> extends RecyclerView.Adapter<baseview>{
jiekou jiekou;
public void setJiekou(com.example.day2.jiekou jiekou) {
this.jiekou = jiekou;
}
ArrayList<T> list;
int layid;
Context context;
public base(ArrayList<T> list, int layid, Context context) {
this.list = list;
this.layid = layid;
this.context = context;
}
@NonNull
@Override
public baseview onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View inflate = LayoutInflater.from(context).inflate(layid, viewGroup, false);
return new baseview(inflate);
}
@Override
public void onBindViewHolder(@NonNull baseview baseview, final int i) {
onbind(baseview,i);
baseview.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
jiekou.OnClickListener(i);
}
});
}
public abstract void onbind(baseview baseview,final int i);
@Override
public int getItemCount() {
return list.size();
}
}
Activity中的使用
package com.example.day2;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity implements jiekou{
base<Bean> base;
RecyclerView recyclerView;
ArrayList<Bean> list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView=findViewById(R.id.list);
list.add(new Bean("みじゅく むじょう されど うつくしくあれ"));
list.add(new Bean("こんなんじゃきっとものたりない"));
list.add(new Bean("くらいかたっとけばうまくいく"));
base = new base<Bean>(list, R.layout.layout, this) {
@Override
public void onbind(baseview baseview, int i) {
baseview.settext(R.id.text,list.get(i).getText());
}
};
recyclerView.setLayoutManager(new LinearLayoutManager(this));
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
recyclerView.addItemDecoration(dividerItemDecoration);
base.setJiekou(this);
recyclerView.setAdapter(base);
}
@Override
public void OnClickListener(int i) {
Toast.makeText(this, "这是第"+i+"条数据", Toast.LENGTH_SHORT).show();
}
}
万能适配器