【问题标题】:RecyclerView list Limited at one fragment and no Limit another fragmentRecyclerView list 限制在一个片段,没有限制另一个片段
【发布时间】:2020-10-05 17:15:09
【问题描述】:

嗨,我想在两个不同的片段中创建一个回收器视图,其中一个片段具有限制回收器视图列表,仅显示 4 个列表,另一个片段显示所有列表项,提前致谢。 主类代码,

private void populatelist() {

    List<reviewModel> reviewModelList = new ArrayList<>();

    for (int i = 1; i < 20; i++) {
        int imges = R.drawable.ic_userlogin;
        String names = "User Name is " + i;
        String dates = "New Dates is " + i;
        String detail = "User details about is " + i;

        reviewModel models = new reviewModel(names, dates, detail, 4, imges);

        reviewModelList.add(models);
    }

    setupRecycle(reviewModelList);
}

private void setupRecycle(List<reviewModel> reviewModelList) {

    if (adaptOverView == null)
        adaptOverView = new reviewAdapt(this, 5);

    adaptOverView.setReviewList(reviewModelList);

    LinearLayoutManager layout = new LinearLayoutManager(this);
    layout.setSmoothScrollbarEnabled(true);
    recyclerOverView.setLayoutManager(layout);
    recyclerOverView.setHasFixedSize(true);
    recyclerOverView.setAdapter(adaptOverView);
}

适配器类代码,

private Context mContext;
private List<reviewModel> reviewList;

private int limit;

public void setReviewList(List<reviewModel> list){
    this.reviewList = list;
    this.notifyDataSetChanged();
}
public reviewAdapt(Context mContext, int limit) {
    this.mContext = mContext;
    this.limit = limit;
}

public reviewAdapt(Context mContext, List<reviewModel> reviewList, int limit) {
    this.mContext = mContext;
    this.reviewList = reviewList;
    this.limit = limit;
}

@NonNull
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    View view = LayoutInflater.from(mContext).inflate(R.layout.review_design, parent, false);
    ViewHolder holder = new ViewHolder(view);
    return holder;
}

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

        if (position < limit) {
            reviewModel model = reviewList.get(position);

            Log.d("TAG", "onBindViewHolder_Limit: "+limit);
            Log.d("TAG", "onBindViewHolder_Position_Is_InLimit: "+position);
            holder.textViewName.setText(model.getName());
            holder.textViewDate.setText(model.getDate());
            holder.ratingBarRecycle.setRating(model.getRatingBar());
            holder.textViewDetails.setText(model.getDetails());
            holder.imageViewRecycle.setImageResource(model.getImg());
        }
}

@Override
public int getItemCount() {

        return reviewList.size();

}


public class ViewHolder extends RecyclerView.ViewHolder {
    TextView textViewName, textViewDate, textViewDetails;
    RatingBar ratingBarRecycle;
    ImageView imageViewRecycle;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);

        textViewName = itemView.findViewById(R.id.name_review);
        textViewDate = itemView.findViewById(R.id.date_review);
        textViewDetails = itemView.findViewById(R.id.details_review);
        ratingBarRecycle = itemView.findViewById(R.id.review_ratingsBar);
        imageViewRecycle = itemView.findViewById(R.id.profile_image);


    }


}
}

【问题讨论】:

    标签: android android-fragments android-recyclerview


    【解决方案1】:

    据我了解,您正在使用限制变量来限制片段的列表大小。但是您没有正确使用它。如果我没记错,请尝试限制适配器中的项目数,如下所示 -

    @Override
    public int getItemCount() {
        return limit;
    }
    

    【讨论】:

    • 如果我这样做,那么它将在两个片段中受到限制,但我希望该列表限制在 1 个片段中,但其他片段将显示完整列表。我试过这个答案,但它限制了我使用回收站视图的所有地方。
    • 这是因为您从不同的片段发送相同的限制值。尝试为一个发送limit = 4,为另一个发送limit = list.size
    • 确保列表大小不是 4,以便区分这两种情况。
    • 我不明白请解释一下我在哪里设置限制 =list.size 和其他设置限制。有一个类我想将限制设置为 4 但另一个片段类没有问题.
    • 根据您的问题,您有两个片段。在一个片段中,您只想显示 4 个项目,而在第二个片段中,您希望显示列表中的所有项目。我说的对吗?
    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    相关资源
    最近更新 更多