Adapter适配器的抽取
public abstract class RecycleAdapter<T> extends RecyclerView.Adapter<ViewHolder> {
private List<T> list = new ArrayList<>();
private Context mcontext;
private int postion;
public RecycleAdapter(Context mcontext) {
this.mcontext = mcontext;
}
public void setList(List<T> datas) {
this.list.clear();
this.list.addAll(datas);
notifyDataSetChanged();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, final int i) {
View view = LayoutInflater.from(mcontext).inflate(getLayoutId(), null);
return new ViewHolder(view);
}
protected abstract int getLayoutId();
protected abstract void convert(ViewHolder viewHolder, T t, int postion);
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
this.postion = i;
convert(viewHolder,list.get(i),i);
}
@Override
public int getItemCount() {
return list.size();
}
}
ViewHoldre的抽取
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.util.SparseArray;
import android.view.View;
import android.widget.TextView;
public class ViewHolder extends RecyclerView.ViewHolder {
private SparseArray<View> views = new SparseArray<>();
View rootView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
rootView = itemView;
}
public <T extends View> T getView(int viewId) {
T view = (T) views.get(viewId);
if (view == null) {
view = rootView.findViewById(viewId);
views.put(viewId, view);
}
return view;
}
public ViewHolder setText(int viewId, String msg) {
Log.d("Tag", msg + ">>>>");
TextView txtview = (TextView) getView(viewId);
txtview.setText(msg);
return this;
}
//如果想添加其他的方法请在下方添加参照setText如获取网络图片等....
}
使用方法:
public class RecycleVeiwActivity extends AppCompatActivity {
private List<String> names = new ArrayList<>();
private Context mContext;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
setContentView(R.layout.activity_recycle);
RecyclerView recy = (RecyclerView) findViewById(R.id.recy);
//设置布局管理器
LinearLayoutManager linManager = new LinearLayoutManager(mContext);
linManager.setOrientation(LinearLayoutManager.VERTICAL);
recy.setLayoutManager(linManager);
/*RecycleAdapter recycleAdapter = new RecycleAdapter(this);*/
//初始化数据
for (int i = 0; i < 100; i++) {
names.add(i + "");
}
Adapter adapter = new Adapter(mContext);
adapter.setList(names);
recy.setAdapter(adapter);
}
class Adapter extends RecycleAdapter<String> {
public Adapter(Context mcontext) {
super(mcontext);
}
@Override
protected int getLayoutId() {
return R.layout.layout_iteam;
}
@Override
protected void convert(ViewHolder viewHolder, String s, int postion) {
viewHolder.setText(R.id.txt_content, postion + "");
}
}
}
实现的效果: