android - 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) {
}
});
}
解决方案
您的意思是要显示 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("");