Попробуйте приведенную ниже строку кода, используя viewType в соответствии с вашими требованиями. Вы можете управлять им
Создать CustomPojo.class
public class CustomPojo{
public String title;
public String name;
public boolean isNeedUpdate;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isNeedUpdate() {
return isNeedUpdate;
}
public void setNeedUpdate(boolean needUpdate) {
isNeedUpdate = needUpdate;
}
}
Запишите приведенную ниже строку кода в поле «Деятельность или фрагмент», где recyclerview
ArrayList listItem = new ArrayList ();
public void setAdapter(){
CustomPojo customPojoNoUpdate = new CustomPojo();
customPojoNoUpdate.setTitle("xyz");
customPojoNoUpdate.setName("xyz");
customPojoNoUpdate.setNeedUpdate(false);
CustomPojo customPojoUpdate = new CustomPojo();
customPojoUpdate.setTitle("xyz");
customPojoUpdate.setName("xyz");
customPojoUpdate.setNeedUpdate(true);
listItem.add(customPojoNoUpdate);
listItem.add(customPojoUpdate);
MyAdapter adapter = new MyAdapter(listItem);
recyclerview.setAdapter(adapter);
}
Введите приведенный ниже код адаптера
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public static final int TYPE_NO_UPDATE = 0;
public static final int TYPE_VIEW_UPDATE = 1;
ArrayList<CustomPojo> list;
public MyAdapter(ArrayList<CustomPojo> list) {
this.list = list;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
RecyclerView.ViewHolder viewHolder = null;
LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
switch (viewType) {
case TYPE_VIEW_UPDATE:
View v1 = inflater.inflate(R.layout.row_update_view, viewGroup, false);
viewHolder = new UpdateView(v1);
break;
case TYPE_NO_UPDATE:
View v4 = inflater.inflate(R.layout.row_no_update, viewGroup, false);
viewHolder = new NoUpdateView(v4);
break;
}
return viewHolder;
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int position) {
if (viewHolder == null) {
return;
}
switch (viewHolder.getItemViewType()) {
case TYPE_VIEW_UPDATE:
UpdateView vh1 = (UpdateView) viewHolder;
vh1.title.setText(list.get(position).getTitle());
vh1.name.setText(list.get(position).getName());
break;
case TYPE_NO_UPDATE:
NoUpdateView vh4 = (NoUpdateView) viewHolder;
vh4.title.setText(list.get(position).getTitle());
break;
}
}
@Override
public int getItemCount() {
return list.size();
}
@Override
public int getItemViewType(int position) {
if (list.size() >= 1 && !list.get(position).isNeedUpdate()) {
return TYPE_VIEW_UPDATE;
} else {
return TYPE_NO_UPDATE;
}
return -1;
}
class UpdateView extends RecyclerView.ViewHolder {
TextView title,name;
public UpdateView(View view) {
super(view);
title = view.findViewById(R.id.title);
name = view.findViewById(R.id.name);
}
}
class NoUpdateView extends RecyclerView.ViewHolder {
TextView title;
public NoUpdateView(final View itemView) {
super(itemView);
title = itemView.findViewById(R.id.title);
}
}}
надеюсь, это поможет вам