Данные перетасовываются, когда представления перерабатываются, эта проблема обычно устраняется путем переопределения двух методов. Но в моем случае у меня есть несколько макетов в представлении переработчика. Я не могу найти решение нигде. В настоящее время для временного исправления. Я использовал holder.setIsRecyclable (false); но это делает просмотрщик бесполезным. Если кто-нибудь знает, как решить эту проблему, это будет здорово. Спасибо.
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
return position;
public class DoubtCommentsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
private ArrayList<DoubtBaseModel.CommentBaseModel> dataset;
private Context mContext;
private int finalType;
private int TYPE_TEACHER = 0,TYPE_PARENT = 2;
public DoubtCommentsAdapter(ArrayList<DoubtBaseModel.CommentBaseModel> dataset, Context mContext) {
this.dataset = dataset;
this.mContext = mContext;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
View view;
if (viewType == TYPE_TEACHER) { // for call layout
view = layoutInflater.inflate(R.layout.teacher_comment_item, parent, false);
return new DoubtCommentTeacherViewholder(view);
} else { // for email layout
view =layoutInflater.inflate(R.layout.parent_comment_item, parent, false);
return new DoubtCommentViewholder(view);
}
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
//holder.setIsRecyclable(false);
final DoubtBaseModel.CommentBaseModel commentBaseModel = dataset.get(position);
if (!Utils.checkNullOrblank(commentBaseModel.getStudentId())) {
final DoubtCommentViewholder commentViewholder = (DoubtCommentViewholder)holder;
if (!Utils.checkNullOrblank(commentBaseModel.getCommentText()))
commentViewholder.textComment.setText(commentBaseModel.getCommentText());
else commentViewholder.textComment.setVisibility(View.GONE);
if (!Utils.checkNullOrblank(commentBaseModel.getCommentFile())&&!Utils.checkNullOrblank(commentBaseModel.getContentType())) {
if (commentBaseModel.getContentType().startsWith("image"))
{ Picasso.get().load(commentBaseModel.getCommentFile()).resize(300,300).placeholder(R.drawable.file_ic).error(R.drawable.file_ic).into(commentViewholder.previewImage);
commentViewholder.previewImage.setBackground(mContext.getResources().getDrawable(R.drawable.image_preview_background));
}else {
commentViewholder.previewImage.setScaleType(ImageView.ScaleType.CENTER);
//commentViewholder.previewImage.setBackgroundColor(mContext.getResources().getColor(R.color.white));
}
commentViewholder.previewImage.setVisibility(View.VISIBLE);
commentViewholder.previewImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openFile(commentBaseModel);
}
});
}
}
else {
final DoubtCommentTeacherViewholder commentViewholder = (DoubtCommentTeacherViewholder)holder;
if (!Utils.checkNullOrblank(commentBaseModel.getCommentText()))
commentViewholder.textComment.setText(commentBaseModel.getCommentText());
else commentViewholder.textComment.setVisibility(View.GONE);
if (!Utils.checkNullOrblank(commentBaseModel.getCommentFile())&&!Utils.checkNullOrblank(commentBaseModel.getContentType())) {
if (commentBaseModel.getContentType().startsWith("image"))
{ Picasso.get().load(commentBaseModel.getCommentFile()).resize(300,300).placeholder(R.drawable.file_ic).error(R.drawable.file_ic).into(commentViewholder.previewImage);
commentViewholder.previewImage.setBackground(mContext.getResources().getDrawable(R.drawable.preview_image_background));
}else {
commentViewholder.previewImage.setScaleType(ImageView.ScaleType.CENTER);
//commentViewholder.previewImage.setBackgroundColor(mContext.getResources().getColor(R.color.white));
}
commentViewholder.previewImage.setVisibility(View.VISIBLE);
commentViewholder.previewImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openFile(commentBaseModel);
}
});
}
}
}
private void openFile(DoubtBaseModel.CommentBaseModel commentBaseModel) {
String [] documentName = commentBaseModel.getCommentFile().split("/");
mContext.startActivity(new Intent(mContext, RevampWebViewActivity.class)
.putExtra(ConstantsImax.LINK,commentBaseModel.getCommentFile())
.putExtra(ConstantsImax.DOCUMENT_NAME,documentName[documentName.length-1])
.putExtra(ConstantsImax.ACTIVITY_TYPE,ConstantsImax.DOUBT_ACTIVITY)
.putExtra(ConstantsImax.ACTION_TYPE,ConstantsImax.DOWNLOAD));
}
@Override
public int getItemCount() {
return dataset.size();
}
public static class DoubtCommentViewholder extends RecyclerView.ViewHolder {
TextView textComment;
ImageView previewImage;
DoubtCommentViewholder(@NonNull View itemView) {
super(itemView);
textComment = itemView.findViewById(R.id.parent_comment_item_text);
previewImage = itemView.findViewById(R.id.parent_comment_item_image);
}
}
public static class DoubtCommentTeacherViewholder extends RecyclerView.ViewHolder {
TextView textComment;
ImageView previewImage;
DoubtCommentTeacherViewholder(@NonNull View itemView) {
super(itemView);
textComment = itemView.findViewById(R.id.teacher_comment_item_text);
previewImage = itemView.findViewById(R.id.teacher_comment_item_image);
}
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
if (!Utils.checkNullOrblank(dataset.get(position).getStudentId())) {
return TYPE_PARENT;
} else {
return TYPE_TEACHER;
}
}
}