Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于字符串移动Recyclerview项目位置_Java_Android_String_Android Recyclerview - Fatal编程技术网

Java 基于字符串移动Recyclerview项目位置

Java 基于字符串移动Recyclerview项目位置,java,android,string,android-recyclerview,Java,Android,String,Android Recyclerview,我有一个Recyclerview,我想根据它们的字符串值对特定项目进行排序。例如,如果RecyclerView中的任何按钮包含字符串“裸体”,则此值将移动到RecyclerView的顶部,而所有其他实例都包含“裸体”和任何其他文本,也将进一步向上移动此列表 { public CategoryGridAdapter(List<String> items, OnListItemClickListener<String> listener) {

我有一个Recyclerview,我想根据它们的字符串值对特定项目进行排序。例如,如果RecyclerView中的任何按钮包含字符串“裸体”,则此值将移动到RecyclerView的顶部,而所有其他实例都包含“裸体”和任何其他文本,也将进一步向上移动此列表

{
    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);}
}