1.TopAdapter 适配器
public class TopAdapter extends RecyclerView.Adapter {
private ArrayListlist;
private ContextmContent;
public TopAdapter(ArrayList list, Context mContent) {
this.list = list;
this.mContent = mContent;
}
/**
* 代表两个不同布局
*/
public class leftViewHoderextends RecyclerView.ViewHolder {
TextViewcontentTV;
public leftViewHoder(@NonNull View itemView) {
super(itemView);
contentTV = itemView.findViewById(R.id.contentTV);
}
}
/**
* 代表两个不同布局 控件初始化
*/
public class rightViewHoderextends RecyclerView.ViewHolder {
TextViewtitleTV;
public rightViewHoder(@NonNull View itemView) {
super(itemView);
titleTV = itemView.findViewById(R.id.titleTV);
}
}
//重写此方法获取类型长度
@Override
public int getItemViewType(int position) {
return list.get(position).getType();
}
//重写此方法 获取条目id
@Override
public long getItemId(int position) {
return super.getItemId(position);
}
@NonNull
@Override
public RecyclerView.ViewHolderonCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//根据type 判断类型,加载布局
if (viewType ==0) {
View leftView = LayoutInflater.from(mContent).inflate(R.layout.reader_item, parent, false);
return new leftViewHoder(leftView);
}else {
View rightView = LayoutInflater.from(mContent).inflate(R.layout.item_home, parent, false);
return new rightViewHoder(rightView);
}
}
/**
* 根据类型填充数据
* @param viewHolder
* @param position
*/
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) {
if(list.get(position).getType() ==0){
leftViewHoder leftViewHoder = (leftViewHoder) viewHolder;
leftViewHoder.contentTV.setText(list.get(position).getName());
}else if(list.get(position).getType() ==1){
rightViewHoder rightViewHoder = (rightViewHoder)viewHolder;
rightViewHoder.titleTV.setText(list.get(position).getName());
}
}
@Override
public int getItemCount() {
return list.size();
}
}
2.实体类TopBeans
public class TopBeans implements Serializable {
private Stringname;
private int type;
public TopBeans(String name,int type){
this.name = name;
this.type = type;
}
public StringgetName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
}
3.设置数据 Fragment 或者 Activity
public class TopBookFragmentextends Fragment {
private ViewmRootView;
private ArrayListlist;
private TopAdaptermTopAdapter;
private RecyclerViewrecyclerView;
@Nullable
@Override
public ViewonCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mRootView = inflater.inflate(R.layout.top_bookrack_fragment, container, false);
initView();
return mRootView;
}
private void initView() {
list =new ArrayList<>();
TopBeans top1 =new TopBeans("张三",0);
TopBeans top2 =new TopBeans("李四",1);
TopBeans top3 =new TopBeans("王五",1);
TopBeans top4 =new TopBeans("小明",0);
TopBeans top5 =new TopBeans("花花",0);
TopBeans top6 =new TopBeans("张三",1);
list.add(top1);
list.add(top2);
list.add(top3);
list.add(top4);
list.add(top5);
list.add(top6);
recyclerView =mRootView.findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.addItemDecoration(new RecycleViewDivider(
getActivity(), LinearLayoutManager.VERTICAL, 2,getResources().getColor(R.color.addgraytv_color)));
mTopAdapter =new TopAdapter(list,getActivity());
recyclerView.setAdapter(mTopAdapter);
}
}
注:xml 布局文件自己随便写就行
网友评论