android - Why does my ListView not filter text anymore after calling setContentView? -
android - Why does my ListView not filter text anymore after calling setContentView? -
full code activity:
package com.stevovo.myactivity; import java.util.arraylist; import java.util.emptystackexception; import android.app.activity; import android.content.context; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.view.viewgroup; import android.view.viewgroup.layoutparams; import android.widget.arrayadapter; import android.widget.button; import android.widget.checkedtextview; import android.widget.expandablelistview; import android.widget.linearlayout; import android.widget.listview; public class myactivityselect extends activity { arraylist<string> mcheckeditems; mylistview lv; expandablelistview elv; activity a; button tv, back1, back2; mysimpleexpandablelist simplelist; //custom expandable list view adapter mysimplegroup grp; //just class manage parents , children boolean firstrun; public void oncreate(bundle savedinstancestate) { simplelist = new mysimpleexpandablelist(myactivityselect .this); super.oncreate(savedinstancestate); = this; firstrun = true; changeview(r.layout.ingr_selectview); } public void onpause() { myactivitydb.db.saveinventoryitems(mcheckeditems); //save checked items in database super.onpause(); } public mysimplegroup computeingredients() { mysimplegroup grp = new mysimplegroup(); ingredient[] ingrs = myactivitydb.db.getingredients(lv.mcheckeditems); string[] currenteffects; string mainingredient; string[] smatchingingredients; arraylist<string> matchingingredients; (int = 0; < ingrs.length; i++) { mainingredient = ingrs[i].name; currenteffects = new string[4]; currenteffects[0] = ingrs[i].effects[0]; currenteffects[1] = ingrs[i].effects[1]; currenteffects[2] = ingrs[i].effects[2]; currenteffects[3] = ingrs[i].effects[3]; matchingingredients = new arraylist<string>(); (int x = 0; x < ingrs.length; x++) { if (mainingredient.equals(ingrs[x].name)) { continue; } (int y = 0; y < 4; y++) { if (currenteffects[y].equals(ingrs[x].effects[y])) { matchingingredients.add(ingrs[x].name); break; } } } smatchingingredients = new string[matchingingredients.size()]; (int x = 0; x < matchingingredients.size(); x++) { smatchingingredients[x] = matchingingredients.get(x).tostring(); } if (matchingingredients.size() > 0) { grp.addgroup(mainingredient, smatchingingredients); } } homecoming grp; } public void changeview(int layoutresid) { switch (layoutresid) { case r.layout.ingr_selectview: a.setcontentview(layoutresid); lv = (mylistview) a.findviewbyid(r.id.list_ingrselect); lv.settextfilterenabled(true); if (firstrun) { lv.mcheckeditems = myactivitydb.db.getsavedinventoryitems(); firstrun = false; } else if (this.mcheckeditems != null) { lv.mcheckeditems = this.mcheckeditems; } tv = (button) a.findviewbyid(r.id.btnshowpotions); tv.settext("show available potions"); tv.setonclicklistener(new onclicklistener() { public void onclick(view v) { if (lv.mcheckeditems.size() > 0) { mysimplegroup grp = computeingredients(); simplelist.clear(); simplelist.addsimplegroup(grp); simplelist.showchildcount(true); mcheckeditems = lv.mcheckeditems; changeview(r.layout.ingr_selectview_ingrs); } } }); class mycheckedtextview extends checkedtextview { public boolean checked; public mycheckedtextview(context context) { super(context); } } class myarrayadapter<t> extends arrayadapter<t> { context context; public myarrayadapter(context context, int textviewresourceid) { super(context, textviewresourceid); this.context = context; } public view getview(int position, view convertview, viewgroup parent) { mycheckedtextview ctv = new mycheckedtextview(this.context); ctv.settext((string) getitem(position).tostring()); ctv.checked = lv.isitemchecked((string) ctv.gettext()); if (ctv.checked) { ctv.setcheckmarkdrawable(android.r.drawable.button_onoff_indicator_on); } else { ctv.setcheckmarkdrawable(android.r.drawable.button_onoff_indicator_off); } ctv.setonclicklistener(new onclicklistener() { public void onclick(view v) { mycheckedtextview view = (mycheckedtextview) v; if (!view.checked) { view.checked = true; view.setcheckmarkdrawable(android.r.drawable.button_onoff_indicator_on); lv.addcheckeditem((string) view.gettext()); } else { view.checked = false; view.setcheckmarkdrawable(android.r.drawable.button_onoff_indicator_off); lv.removecheckeditem((string) view.gettext()); } } }); homecoming ctv; } } myarrayadapter<string> arr = new myarrayadapter<string>(this, android.r.layout.simple_list_item_checked); myactivitydb.db.ingredient_list_array(arr); lv.setadapter(arr); lv.setchoicemode(listview.choice_mode_multiple); break; case r.layout.ingr_selectview_ingrs: a.setcontentview(layoutresid); elv = (expandablelistview) a.findviewbyid(r.id.list_ingrselectingrs); elv.setadapter(simplelist); back1 = (button) a.findviewbyid(r.id.btnback); back1.settext("go back"); back1.setonclicklistener(new onclicklistener() { public void onclick(view v) { changeview(r.layout.ingr_selectview); } }); break; } } }
i have method changeview
uses setcontentview
switch between 2 different views. works fine, inital list view's (mylistview lv
) text filter works 1 time when starting activity.
after calling changeview
method lv
list view text filter no longer works. can tell me why?
please allow me know if more info required.
thanks
android listview filter
Comments
Post a Comment