Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
Android RecycleView以编程方式添加搜索视图_Android_Search_Filter_Android Recyclerview - Fatal编程技术网

Android RecycleView以编程方式添加搜索视图

Android RecycleView以编程方式添加搜索视图,android,search,filter,android-recyclerview,Android,Search,Filter,Android Recyclerview,我以编程方式设计RecycleView而不使用XML,因此我可以通过处理Java文件在所有项目中重用此代码 我需要将SearchView添加到RecycleView,并以编程方式设置所有搜索查询过滤器,而无需使用任何第三方API SearchView searchVyuVar = new SearchView(this); searchVyuVar.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Overrid

我以编程方式设计RecycleView而不使用XML,因此我可以通过处理Java文件在所有项目中重用此代码

我需要将SearchView添加到RecycleView,并以编程方式设置所有搜索查询过滤器,而无需使用任何第三方API

SearchView searchVyuVar = new SearchView(this);
searchVyuVar.setOnQueryTextListener(new SearchView.OnQueryTextListener()
{
    @Override
    public boolean onQueryTextSubmit(String query)
    {
        recylcleLysLysMgrVar.filter(query);
        return true;
    }

    @Override
    public boolean onQueryTextChange(String newText) {
        recylcleLysLysMgrVar.filter(newText);
        return true;
    }
});

RecyclerView recylcleLysLyoVav = new RecyclerView(this);
recylcleLysLyoVav.addView(searchVyuVar);

recylcleLysLyoVav.setAdapter(recylcleLysLysMgrVar);
recylcleLysLyoVav.setLayoutManager(new LinearLayoutManager(this));

经过一整天的努力,我得到了这个按程序设计的搜索栏。
通过以下链接的帮助

这是为了帮助所有我不想像我一样挣扎的人

LinearLayout NamSupRloVav;
SearchView NamSrhVyuVav;
RecyclerView NamLysLyoVav;
NamLysAdrCls NamLysAdrVar;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    NamSupRloVav = new LinearLayout(this);
    NamSupRloVav.setOrientation(LinearLayout.VERTICAL);

    NamSrhVyuVav = new SearchView(this);
    NamSrhVyuVav.setQueryHint("Search . . .");
    NamSrhVyuVav.setIconified(false);
    NamSrhVyuVav.onActionViewExpanded();
    NamSrhVyuVav.setPadding(20,10,20,10);
    NamSupRloVav.addView(NamSrhVyuVav);

    NamLysLyoVav = new RecyclerView(this);
    NamLysLyoVav.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
    NamLysLyoVav.setVerticalScrollBarEnabled(true);

    NamLysAdrVar = new NamLysAdrCls(GetAllNamAryLysFnc());
    NamLysLyoVav.setAdapter(NamLysAdrVar);
    NamLysLyoVav.setLayoutManager(new LinearLayoutManager(this));

    NamSrhVyuVav.setOnQueryTextListener(new SearchView.OnQueryTextListener()
    {
        @Override
        public boolean onQueryTextChange(String SrhSrgPsgVal)
        {
            NamLysAdrVar.SrhFltFnc(SrhSrgPsgVal);
            return true;
        }

        @Override
        public boolean onQueryTextSubmit(String SrhSrgPsgVal)
        {
            NamLysAdrVar.SrhFltFnc(SrhSrgPsgVal);
            return true;
        }
    });

    NamSupRloVav.addView(NamLysLyoVav);
    setContentView(NamSupRloVav);
}

public class NamLysAdrCls extends RecyclerView.Adapter<VyuHlrCls>
{
    ArrayList<NamCls> FchNamAryLysVar = new ArrayList<NamCls>();
    ArrayList<NamCls> SrhNamAryLysVar = new ArrayList<NamCls>();

    public NamLysAdrCls(ArrayList<NamCls> NamLysPsgVar)
    {
        FchNamAryLysVar.addAll(NamLysPsgVar);
        SrhNamAryLysVar.addAll(NamLysPsgVar);
    }

    @Override
    public VyuHlrCls onCreateViewHolder(ViewGroup HubVyuGrp, int viewType)
    {
// |=> CodTdo Design Itm Idx Lyo
        VyuHlrCls VyuHlrVar = new VyuHlrCls(NamLysItmLloVav);
        return VyuHlrVar;
    }

    @Override
    public void onBindViewHolder(VyuHlrCls VyuHlrPsgVar, int ItmIdxPsgVar)
    {

    }

    @Override
    public int getItemCount()
    {
        return SrhNamAryLysVar.size();
    }

    public void DelItmFnc(int ItmPosPsgVar)
    {
        SrhNamAryLysVar.remove(ItmPosPsgVar);
        notifyItemRemoved(ItmPosPsgVar);
    }

    public void SrhFltFnc(String SrhSrgPsgVal)
    {
        SrhSrgPsgVal = SrhSrgPsgVal.toLowerCase();
        SrhNamAryLysVar.clear();
        if (SrhSrgPsgVal.length() == 0) SrhNamAryLysVar.addAll(FchNamAryLysVar);
        else
        {
            for (NamCls NamIdxVar : FchNamAryLysVar)
            {
                if(NamIdxVar.toLowerCase().contains(SrhSrgPsgVal))
                {
                    SrhNamAryLysVar.add(NamIdxVar);
                }
            }
        }
        notifyDataSetChanged();
    }
}
LinearLayout NamSupRloVav;
SearchView NamSrhVyuVav;
回收视图Namlyslyovava;
NamLysAdrCls NamLysAdrVar;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
NamSupRloVav=新的线性布局(本);
NamSupRloVav.设置方向(线性布局。垂直);
NamSrhVyuVav=新的搜索视图(此);
NamSrhVyuVav.setQueryHint(“搜索…”);
NamSrhVyuVav.setIconified(假);
NamSrhVyuVav.onActionViewExpanded();
NamSrhVyuVav.设置填充(20,10,20,10);
NamSupRloVav.addView(NamSrhVyuVav);
Namlyslyovava=新的回收视图(本);
Namlyslyovava.addItemDecoration(新的DividerItemDecoration(此,DividerItemDecoration.垂直));
Namlyslyovava.setVerticalScrollBarEnabled(真);
NamLysAdrVar=新的NamLysAdrCls(GetAllNamAryLysFnc());
Namlyslyovava.setAdapter(NamLysAdrVar);
Namlyslyovava.setLayoutManager(新直线布局经理(本));
NamSrhVyuVav.setOnQueryTextListener(新的SearchView.OnQueryTextListener()
{
@凌驾
公共布尔onQueryTextChange(字符串SrhSrgPsgVal)
{
NamLysAdrVar.SrhFltFnc(SrhSrgPsgVal);
返回true;
}
@凌驾
公共布尔值onQueryTextSubmit(字符串SrhSrgPsgVal)
{
NamLysAdrVar.SrhFltFnc(SrhSrgPsgVal);
返回true;
}
});
NamSupRloVav.addView(Namlyslyovava);
setContentView(NamSupRloVav);
}
公共类NamLysAdrCls扩展了RecyclerView.Adapter
{
ArrayList fchnamarysvar=新的ArrayList();
ArrayList srhnamarysvar=新的ArrayList();
公共NamLysAdrCls(ArrayList NamLysPsgVar)
{
FchNamAryLysVar.addAll(NamLysPsgVar);
Srhnamarysvar.addAll(NamLysPsgVar);
}
@凌驾
公共VyuHlrCls onCreateViewHolder(视图组HubVyuGrp,int-viewType)
{
//|=>CodTdo设计Itm Idx Lyo
VyuHlrCls VyuHlrVar=新的VyuHlrCls(Namlistmlovava);
返回VyuHlrVar;
}
@凌驾
BindViewHolder上的公共无效(VyuHlrCls VyuHlrPsgVar,int ItmIdxPsgVar)
{
}
@凌驾
public int getItemCount()
{
返回srhnaysvar.size();
}
公共无效交付物FNC(int ItmPosPsgVar)
{
srhnamarysvar.remove(itmpospgvar);
notifyItemRemoved(ItmPosPsgVar);
}
公共无效SrhFltFnc(字符串SrhSrgPsgVal)
{
SrhSrgPsgVal=SrhSrgPsgVal.toLowerCase();
srhnaysvar.clear();
如果(SrhSrgPsgVal.length()==0)srhnamarysvar.addAll(fchnamarysvar);
其他的
{
用于(NamCls NamIdxVar:FCHNAMARYYSVAR)
{
if(NamIdxVar.toLowerCase().contains(SrhSrgPsgVal))
{
srhnamarysvar.add(NamIdxVar);
}
}
}
notifyDataSetChanged();
}
}

请忽略所用函数和变量的不同命名形式。