gpt4 book ai didi

android - 滚动回收器 View 时如何防止项目重复

转载 作者:可可西里 更新时间:2023-11-01 18:49:14 26 4
gpt4 key购买 nike

我在回收站 View 中创建了一行,并在其中膨胀了两行或更多行,但是当我滚动时,这些项目又被使用了。我不知道在哪里回收查看或动态删除它们我需要一个提要和他们的评论。对于评论,我需要扩充布局以将它们显示在为其创建 getCommentInflaterView 方法的提要下方。

但是使用 getCommentInflaterView() 创建的 View 被复制了。我的适配器类:

public class AllFeedsAdapter extends
RecyclerView.Adapter<AllFeedsAdapter.ViewHolder> {

ArrayList<Data> arrayListAllFeedsData;
Comment objComment;


Context context;

public AllFeedsAdapter(Context context, ArrayList<Data> data) {
this.context = context;
arrayListAllFeedsData = new ArrayList<>();
arrayListAllFeedsData = data;
}


@Override
public AllFeedsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Context context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);

// Inflate the custom layout
View post_row_view = inflater.inflate(R.layout.row_teacher_post, parent, false);

// Return a new holder instance
ViewHolder viewHolder = new ViewHolder(post_row_view);
return viewHolder;
}

@Override
public void onBindViewHolder(AllFeedsAdapter.ViewHolder holder, int position) {

holder.txtUsernamePostCreator.setText(arrayListAllFeedsData.get(position).getFull_name());
holder.txtPostContent.setText(arrayListAllFeedsData.get(position).getFeed_text());
holder.txtPostLikeCounter.setText(arrayListAllFeedsData.get(position).getTotal_like());
holder.txtPostCommentsCounter.setText(arrayListAllFeedsData.get(position).getTotal_comment());

if (arrayListAllFeedsData.get(position).getComment().size() > 0) {


if (arrayListAllFeedsData.get(position).getComment().size() > 2) {
for (int i = 0; i < 2; i++) {

objComment = arrayListAllFeedsData.get(position).getComment().get(i);

if (getCommentInflaterView(objComment) == null) {
holder.llCommentRowInflater.addView(getCommentInflaterView(objComment));
} else {
holder.llCommentRowInflater.removeAllViews();
}


}
} else {
for (int i = 0; i < arrayListAllFeedsData.get(position).getComment().size(); i++) {

objComment = arrayListAllFeedsData.get(position).getComment().get(i);
if (getCommentInflaterView(objComment) == null) {
holder.llCommentRowInflater.addView(getCommentInflaterView(objComment));

} else {
holder.llCommentRowInflater.removeAllViews();
}

}
}

}


}

private View getCommentInflaterView(Comment commentData) {

LayoutInflater layoutInflater = LayoutInflater.from(context);
View v = layoutInflater.inflate(R.layout.post_comments_list_item, null, false);

TextView txtCommenterUsername = (TextView) v.findViewById(R.id.txt_username_commenter);
TextView txtCommenterComment = (TextView) v.findViewById(R.id.txt_comments_from_commenter);
TextView txtCommentDuration = (TextView) v.findViewById(R.id.txt_comment_duration);


txtCommenterUsername.setText(commentData.getUsername());
txtCommenterComment.setText(commentData.getComment());
txtCommentDuration.setText(commentData.getCommentBy());


return v;

}

@Override
public int getItemCount() {
return arrayListAllFeedsData.size();
}

/**
* USed to create static class for all the view if listitem child
*/
public static class ViewHolder extends RecyclerView.ViewHolder {
// Your holder should contain a member variable
// for any view that will be set as you render a row

public LinearLayout llParentTeacherPost, llCommentRowInflater;

// We also create a constructor that accepts the entire item row
// and does the view lookups to find each subview
public ViewHolder(View itemView) {
// Stores the itemView in a public final member variable that can be used
// to access the context from any ViewHolder instance.
super(itemView);
llParentTeacherPost = (LinearLayout) itemView.findViewById(R.id.ll_parent_teacher_post);
llCommentRowInflater = (LinearLayout) itemView.findViewById(R.id.ll_comment_row_inflater);

imgDpPostCreator = (ImageView) itemView.findViewById(R.id.img_dp_post_creator);
txtUsernamePostCreator = (TextView)
}


}
}

最佳答案

在适配器中覆盖这两个方法。

@Override
public long getItemId(int position) {
return position;
}

@Override
public int getItemViewType(int position) {
return position;
}

关于android - 滚动回收器 View 时如何防止项目重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33316837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com