首页 > 解决方案 > Recyclerview 仅显示 3 项,查看更多以显示所有数据

问题描述

在此处输入代码我正在尝试创建一个 recyclerview 以在每次执行时仅显示 3 个项目,然后有一个查看更多以查看更多项目。

ServicesAdapter 


@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
    TypeProducts str = services.get(myViewHolder.getAdapterPosition());

    myViewHolder.title.setText(str.getName());
    Glide.with(context).load(str.getImageUrl()).into(myViewHolder.imageView);

}

服务屏幕适配器

public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
    TypeServices str = typeServices.get(myViewHolder.getAdapterPosition());


    Log.d("getsize",String.valueOf(typeServices.size()));


    ServicesAdapter serviceadapter = new ServicesAdapter(context, str.getProducts());


    myViewHolder.tvTitle.setText(str.getName());
    myViewHolder.rclist.setAdapter(serviceadapter);

    myViewHolder.tvViewMore.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });


}

标签: android

解决方案


您的意思是要显示 3 个项目,但每次运行时,项目都会变大?您可能会忘记删除以前的项目并添加 3 个新项目。或使用新项目编辑 3 个项目。

yourList.set(itemPosition, yourObject);
                                            
 yourRecyclerAdapter.notifyItemChanged(itemPosition);

或者

    for(int i=0 ;i< mRecyclerView.getAdapter().getItemCount();i++)
    {
        msgDtoList.remove(i);   
    }                                    
    yourRecyclerAdapter.notifyItemRangeRemoved(0, 
    msgRecyclerView.getAdapter().getItemCount() - 1);

然后添加新项目。

编辑:

将此代码添加到您的适配器类:

public Filter getFilter(bool getFirsts)
    {
        return new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence charSequence) {
             List<YourObject> filteredList=new ArrayList<>();
            if(getFirsts){
                String s=charSequence.toString();
                YourObjectListFiltered=YourObjectList;
               
                for (YourObject row:YourObjectList)
                {
                     //Write here any condition that separates those 3 items from others.
                    if(row.getItemPosition()>=0 && row.getItemPosition()<=2)
                        filteredList.add(row);
                }
            }else{
                filteredList=YourObjectList;
             }
                YourObjectListFiltered=filteredList;

                FilterResults filterResults=new FilterResults();
                filterResults.values=surveyTitlesFiltered;
                return filterResults;
            }

            @Override
            protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
                YourObjectListFiltered=(ArrayList<YourObject>)filterResults.values;
                notifyDataSetChanged();
            }
        };
    }

叫它 : yourRecyclerAdapter.getFilter(true).filter("");


推荐阅读