android - Can I implement Google Guava Search in SearchView -
i'm using searchview in custom list. shows wrong result i.e. same result every time(first item of list). so, try use google's gauva filter , works great when log result after filter. don't know how integrate listview.
here code of customlist.java package com.jarvis.easysplay.adapter;
public class customlist extends arrayadapter implements filterable{ private string[] names; private string[] desc; private integer[] imageid; private activity context; public customlist(activity context, string[] names, string[] desc) { super(context, r.layout.list_item, names); this.context = context; this.names = names; this.desc = desc; // this.imageid = imageid; } @override public view getview(final int position, view convertview, viewgroup parent) { layoutinflater inflater = context.getlayoutinflater(); view listviewitem = inflater.inflate(r.layout.song_list_layout, null, true); textview textviewname = (textview) listviewitem.findviewbyid(r.id.song_title); textview textviewdesc = (textview) listviewitem.findviewbyid(r.id.song_author); imageview image = (imageview) listviewitem.findviewbyid(r.id.imageview); // textview options = (textview) listviewitem.findviewbyid(r.id.options); //set data textviewname.settext(names[position]); textviewdesc.settext(desc[position]); return listviewitem; } @nonnull @override public filter getfilter() { return super.getfilter(); } }
and search filter code:-
public void oncreateoptionsmenu(menu menu, menuinflater inflater) { inflater.inflate(r.menu.music_search, menu); menuitem searchitem = menu.finditem(r.id.music_search_bar); searchview searchview = (searchview) searchitem.getactionview(); searchview.setqueryhint("search song"); searchview.setonquerytextlistener(new searchview.onquerytextlistener() { @override public boolean onquerytextsubmit(string query) { return true; } @override public boolean onquerytextchange(string newtext) { // songfragment.this.customlist.getfilter().filter(newtext); //i used not working list<string> list = new arraylist<>(); list.addall(arraylist); list<string> filteredlist = lists.newarraylist(collections2.filter( list, predicates.contains(pattern.compile(newtext,pattern.case_insensitive)))); string[] stringarray = filteredlist.toarray(new string[0]); customlist custom = new customlist(getactivity(),stringarray,stringarray); custom.getfilter().filter(newtext); log.d("searchresult",filteredlist.tostring()); return false; } }); super.oncreateoptionsmenu(menu, inflater); }
can tell me how can use google's guava in code or how correct result using without using google's guava filter. did google , try many solutions didn't work :(.
you're creating new customlist
adapter, aren't doing it. you'll need install new adapter in listview or whatever adapterview using. if you're using listview, call listview.setadapter(custom)
. don't need mix , match filtering using filterable
, filtering guava.
Comments
Post a Comment