//这是平常的单条目(记得加布局管理器)
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Holder> implements View.OnClickListener {
private String[] mNames;
public MyAdapter(String[] names){
this.mNames = names;
}
@Override
public MyAdapter.Holder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(parent.getContext(), R.layout.item, null);
view.setOnClickListener(this);
Holder holder = new Holder(view);
return holder;
}
@Override
public void onBindViewHolder(MyAdapter.Holder holder, int position) {
holder.text.setText(mNames[position]);
holder.itemView.setTag(position);
}
@Override
public int getItemCount() {
return mNames.length;
}
public class Holder extends RecyclerView.ViewHolder{
private final TextView text;
public Holder(View itemView) {
super(itemView);
text = itemView.findViewById(R.id.text_item);
}
}
public interface OnItemClick{
void setOnItemClick(View view,int position);
}
private OnItemClick onItemClick;
public void setOnItemClick(OnItemClick onItemClick) {
this.onItemClick = onItemClick;
}
@Override
public void onClick(View v) {
if (onItemClick != null){
onItemClick.setOnItemClick(v, (Integer) v.getTag());
}
}
}
//多条目写法(继承的RecyclerView.Adapter泛型发生改变,不去写死)
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class MoreAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private String[] mNames;
private static final int ONE_ITEM = 0;
private static final int TWP_ITEM = 1;
public MoreAdapter(String[] mNames) {
this.mNames = mNames;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = null;
if (i == ONE_ITEM) {
view = View.inflate(viewGroup.getContext(), R.layout.one_item, null);
OneHolder holder = new OneHolder(view);
return holder;
} else {
view = View.inflate(viewGroup.getContext(), R.layout.two_item, null);
TwoHolder holder = new TwoHolder(view);
return holder;
}
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
if (viewHolder instanceof OneHolder){
((OneHolder) viewHolder).text.setText(mNames[i]);
}else {
((TwoHolder) viewHolder).text2.setText(mNames[i]);
}
}
@Override
public int getItemCount() {
return mNames.length;
}
@Override
public int getItemViewType(int position) {
if (position % 2 == 0) {
return ONE_ITEM;
} else {
return TWP_ITEM;
}
}
class OneHolder extends RecyclerView.ViewHolder {
private final TextView text;
public OneHolder(@NonNull View itemView) {
super(itemView);
text = itemView.findViewById(R.id.one_item);
}
}
class TwoHolder extends RecyclerView.ViewHolder {
private final TextView text2;
public TwoHolder(@NonNull View itemView) {
super(itemView);
text2 = itemView.findViewById(R.id.two_item);
}
}
}
//瀑布流写法
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import java.util.ArrayList;
import java.util.Random;
public class FlowAdapter extends RecyclerView.Adapter<FlowAdapter.MyHolder> {
private ArrayList<Integer> mList;
public FlowAdapter(ArrayList<Integer> list){
this.mList = list;
}
@Override
public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//因为瀑布流展示效果涉及到了它的父类
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item2,parent,false);
MyHolder holder = new MyHolder(view);
return holder;
}
@Override
public void onBindViewHolder(MyHolder holder, int position) {
holder.mImage.setImageResource(mList.get(position));
//LayoutParams里面封装队友控件设置宽高,居中方式等等
ViewGroup.LayoutParams layoutParams = holder.itemView.getLayoutParams();
Random random = new Random();
int height = random.nextInt(400)+200;
layoutParams.height = height;
holder.itemView.setLayoutParams(layoutParams);
}
@Override
public int getItemCount() {
return mList.size();
}
public class MyHolder extends RecyclerView.ViewHolder {
private final ImageView mImage;
public MyHolder(View itemView) {
super(itemView);
mImage = itemView.findViewById(R.id.text2_item);
}
}
}