如何在导航栏

时间:2017-10-06 17:18:37

标签: xamarin xamarin.forms

我需要在xamarin.forms的android导航栏中实现搜索栏,搜索时我发现很多ios的例子但不是android.How通过customrenderer实现这个问题吗?

1 个答案:

答案 0 :(得分:1)

创建搜索的简便方法是创建类并利用过滤器选项 像这样

顶部的搜索栏按钮

 <item android:id="@+id/action_search"
            android:title="Search"
            app:actionViewClass="androidx.appcompat.widget.SearchView"
            app:showAsAction="always" />

您可能需要的课程

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu, menu);
        MenuItem searchItem = menu.findItem(R.id.action_search);
        SearchView searchView = (SearchView) searchItem.getActionView();
        searchView.setOnQueryTextListener(this);

        return true;
    }

    //getting text from user
    @Override
    public boolean onQueryTextChange(String newText) {
        activity.getFilter().filter(newText);
        return false;
    }

    //submitting Text 
    @Override
    public boolean onQueryTextSubmit(String newText) {
        activity.getFilter().filter(newText);
        return false;
    }

这是其他活动

public Filter getFilter() {
        return filter;
    }
    private Filter filter = new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            List<Pokemon> to_be_filtered = new ArrayList<>();
            String filterPattern = constraint.toString().toLowerCase().trim();

            //implement search
           
            if(filterPattern.isEmpty())  {
                 to_be_filtered.addAll(fulllist);
            }
            else {
                for (some this iterate over ) {
                    if (get_name_of_required 
                         search.getName().toLowerCase().contains(filterPattern)) {
                        add_created_database_to_be_filtered.add(name of list variable);
                    }
                }
            }

在这种情况下,您必须使用称为getfilter()的内置函数,它将处理搜索栏。 在这里,我使用过诸如to_be_filtered和add_created_database之类的语句,您必须根据所使用的数据库来修改代码。

我的情况是我有2个活动,其中前三个类,即OnQuerySearch ...,Submit text和Save text在MainActivity中,而getFilter()在另一个Activity中

谢谢,我希望你能得到答案