searchview如何在android中为listView工作?

searchview如何在android中为listView工作?,第1张

概述假设我有这样的listview内容. ------------------------------------------------------TextView TextView--------------------------------------------------TextView TextView--------------- 假设我有这样的@R_502_6818@vIEw内容.

------------------------------------------------------TextVIEw             TextVIEw--------------------------------------------------TextVIEw             TextVIEw----------------------------------------------------TextVIEw             TextVIEw-------------------------------------------------------TextVIEw             TextVIEw----------------------------------------------------

因此可以使用androID中的searchvIEw在@R_502_6818@vIEw的每个组件上搜索我的搜索内容.

例如,如果我输入searchvIEw“bob”.然后它将检查所有4 textvIEw中的bob并给你更新的结果….

解决方法 是的,这是可能的,并且可以使用SearchVIEw实现.您的适配器应该实现Filterable,它的getFilter()方法将具有您的过滤条件.

我在Actionbar中使用SearchVIEw来显示此功能.

我的活动 –

public class MyActivity extends Sherlock@R_502_6818@Activity implements OnqueryText@R_502_6818@ener {    private MyMessage myMessage; // @R_502_6818@ item,which is a model class in my case    private @R_502_6818@VIEw m@R_502_6818@VIEw;    private MessageAdapter mAdapter;    /** Called when the activity is first created. */    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        getSupportActionbar().setdisplayHomeAsUpEnabled(true);        setContentVIEw(R.layout.layout_containing_@R_502_6818@VIEw);    }    @OverrIDe    public boolean onCreateOptionsMenu(Menu menu) {        //Create the search vIEw        SearchVIEw searchVIEw = new SearchVIEw(getSupportActionbar().getthemedContext());        m@R_502_6818@VIEw = get@R_502_6818@VIEw();        m@R_502_6818@VIEw.setTextFilterEnabled(true);        setupSearchVIEw(searchVIEw);        menu.add(0,1,null)            .setIcon(R.drawable.ic_search)            .setActionVIEw(searchVIEw)            .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_ColLAPSE_ACTION_VIEW);        return super.onCreateOptionsMenu(menu);    }    private voID setupSearchVIEw(SearchVIEw mSearchVIEw) {        mSearchVIEw.setIconifIEdByDefault(false);        mSearchVIEw.setsubmitbuttonEnabled(false);        mSearchVIEw.setonqueryText@R_502_6818@ener(this);        mSearchVIEw.setqueryHint("Search Sender");    }    @OverrIDe    public boolean onqueryTextChange(String newText) {        if (TextUtils.isEmpty(newText)) {            m@R_502_6818@VIEw.clearTextFilter();        } else {            m@R_502_6818@VIEw.setFilterText(newText);        }        return true;    }    @OverrIDe    public boolean onqueryTextsubmit(String query) {        return false;    }}

我的适配器 –

public class MessageAdapter extends BaseAdapter implements Filterable {    @R_502_6818@<MyMessage> msgs@R_502_6818@;    @R_502_6818@<MyMessage> mOriginalValues;    @R_502_6818@<String> m@R_502_6818@Item; // any key of MyMessage Model Class    MyMessage message;    public MessageAdapter(@R_502_6818@<MyMessage> msg@R_502_6818@) {        super();        this.msgs@R_502_6818@ = msg@R_502_6818@;    }    ….     ….    …    @OverrIDe    public Filter getFilter() {        /**         * A filter object which will         * filter message key         * */        Filter filter = new Filter() {            @SuppressWarnings("unchecked")            @OverrIDe            protected voID publishResults(CharSequence constraint,FilterResults results) {                msgs@R_502_6818@ = (@R_502_6818@<MyMessage>) results.values; // has the filtered values                notifyDataSetChanged();  // notifIEs the data with new filtered values. Only filtered values will be shown on the @R_502_6818@             }            @OverrIDe            protected FilterResults performFiltering(CharSequence constraint) {                FilterResults results = new FilterResults();        // Holds the results of a filtering operation for publishing                @R_502_6818@<MyMessage> FilteredArr@R_502_6818@ = new Array@R_502_6818@<MyMessage>();                if (mOriginalValues == null) {                    mOriginalValues = new Array@R_502_6818@<MyMessage>(msgs@R_502_6818@); // saves the original data in mOriginalValues                }                if(m@R_502_6818@Item == null){                    m@R_502_6818@Item = new Array@R_502_6818@<String>();                    for(MyMessage message : mOriginalValues){                        m@R_502_6818@Item.add(message.getMessage());                    }                }                /**                 *                  *  If constraint(CharSequence that is received) is null returns the mOriginalValues(Original) values                 *  else does the Filtering and returns FilteredArr@R_502_6818@(Filtered)                   *                 **/                if (constraint == null || constraint.length() == 0) {                    /* CONTRACT FOR IMPLEMENTING FILTER : set the Original values to result which will be returned for publishing */                    results.count = mOriginalValues.size();                    results.values = mOriginalValues;                } else {                    /* Do the filtering */                    constraint = constraint.toString().tolowerCase();                    for (int i = 0; i < m@R_502_6818@Item.size(); i++) {                        String data = m@R_502_6818@Item.get(i);                        if (data.tolowerCase().startsWith(constraint.toString())) {                            FilteredArr@R_502_6818@.add(mOriginalValues.get(i));                        }                    }                        // set the Filtered result to return                    results.count = FilteredArr@R_502_6818@.size();                    results.values = FilteredArr@R_502_6818@;                }                return results;            }        };        return filter;    }}

为方便起见,我的模型类MyMessage –

public class MyMessage implements Parcelable{    private String messageKey = "";    private String key = "";    private String key2 = "";    //getters and setters}
总结

以上是内存溢出为你收集整理的searchview如何在android中为listView工作?全部内容,希望文章能够帮你解决searchview如何在android中为listView工作?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1121857.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存