Java 基于字符串移动Recyclerview项目位置
我有一个Recyclerview,我想根据它们的字符串值对特定项目进行排序。例如,如果RecyclerView中的任何按钮包含字符串“裸体”,则此值将移动到RecyclerView的顶部,而所有其他实例都包含“裸体”和任何其他文本,也将进一步向上移动此列表Java 基于字符串移动Recyclerview项目位置,java,android,string,android-recyclerview,Java,Android,String,Android Recyclerview,我有一个Recyclerview,我想根据它们的字符串值对特定项目进行排序。例如,如果RecyclerView中的任何按钮包含字符串“裸体”,则此值将移动到RecyclerView的顶部,而所有其他实例都包含“裸体”和任何其他文本,也将进一步向上移动此列表 { public CategoryGridAdapter(List<String> items, OnListItemClickListener<String> listener) {
{
public CategoryGridAdapter(List<String> items, OnListItemClickListener<String> listener)
{
super(items, listener);
}
@NonNull @Override
public BaseViewHolder<String> onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
{
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.item_grid_category, parent, false);
return new CategoryGridViewHolder(view);
}
@Override
public void onBindViewHolder(BaseViewHolder<? super String> holder, int position)
{
String item = getItem(position);
holder.bind(item);
holder.itemView.findViewById(R.id.button).setOnClickListener(v -> getListener().onItemClick(item, holder.itemView));
}
}
{
public CategoryGridAdapter(列表项,OnListItemClickListener)
{
超级(项目、听众);
}
@非空@覆盖
public BaseViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType)
{
LayoutInflater充气器=LayoutInflater.from(parent.getContext());
视图=充气机。充气(R.layout.item\u grid\u category,parent,false);
返回新的CategoryGridViewHolder(视图);
}
@凌驾
BindViewHolder上的公共无效(BaseViewHolder)与Constructor一起通过布局管理器
类适配器扩展了RecyclerView.Adapter{
私人直线酒店经理;
公用适配器(LinearLayoutManager)
{
这个。经理=经理;
}
@凌驾
公共无效onBindViewHolder(最终RecyclerView.ViewHolder,最终整型位置){
if(holder.button.gettext().tostring().equals(“裸”)
{manager.scrollToPosition(0);}
}
与Constructor一起传递布局经理
类适配器扩展了RecyclerView.Adapter{
私人直线酒店经理;
公用适配器(LinearLayoutManager)
{
这个。经理=经理;
}
@凌驾
公共无效onBindViewHolder(最终RecyclerView.ViewHolder,最终整型位置){
if(holder.button.gettext().tostring().equals(“裸”)
{manager.scrollToPosition(0);}
}
> p>您可能想考虑ListAdvor类
然后,您可以轻松地使用循环之类的方法对列表进行排序,然后将其传递给
提交列表(新列表)
ListAdapter可以为你处理所有的事情,你甚至可以为移动的位置获得很好的动画效果。因此,你不必告诉它列表中的哪些内容发生了变化,它会自己发现
在您的情况下,您可以手动排序列表,例如使用一个计算器,并在每次更改时将其传递给提交列表。
< P>您可能想考虑ListAdvor类。
然后,您可以轻松地使用循环之类的方法对列表进行排序,然后将其传递给
提交列表(新列表)
ListAdapter可以为你处理所有的事情,你甚至可以为移动的位置获得很好的动画效果。因此,你不必告诉它列表中的哪些内容发生了变化,它会自己发现
在您的情况下,您可以手动排序列表,例如使用Comperator,并在每次更改时将其传递给submitList
class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
private LinearLayoutManager manager;
public Adapter(LinearLayoutManager manager)
{
this.manager=manager;
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
if (holder.button.gettext().tostring().equals("Naked")
{manager.scrollToPosition(0);}
}