Android Custom ArrayAdapter wird nach dem Filter nicht aktualisiert
Also habe ich einen BrauchArrayAdapter
So kann ich die Titel- / Untertitelansicht verwenden, die auf der Seite verfügbar istListView
. ich habe einEditText
Das akzeptiert einen String und filtert den Adapter.
Der Filter funktioniert in dem Sinne, dass er die richtigen Objekte filtert (ich kann es durch Anklicken erkennen und er startet die Absicht mit den richtigen "Extras".)
Obwohl die Filterung funktioniert, werden die Elemente im Adapter nicht aktualisiert, um die richtigen Informationen anzuzeigen ... Titel und Untertitel sind falsch.
Nehmen wir an, wir haben die Artikel 0 bis 9 auf derListView
, Ich filtere mit einer Suche nach 3 Elementen und nehme an, die gefilterten Elemente sind 5, 6, 9 ... 3 Elemente werden angezeigt, aber es sind die ersten 3 Elemente der ursprünglichen VorsucheListView
(0-2). Wenn ich auf Punkt 2 (den dritten Punkt) klicke, ist der Inhalt von 9 in der neuen Absicht enthalten. Dies ist für die Suchkriterien korrekt, der Titel spiegelte jedoch die korrekten Informationen wider.
Ich bin mir nicht sicher, was ich dem sagen sollListView
erneuern. Ich glaube nichtnotifyDataSetChanged();
Jede Hilfe wird geschätzt. Vielen Dank!
public class myListAdapter extends ArrayAdapter<Pizza>{
private ArrayList<Pizza> items;
private PizzaViewHolder myListHolder;
private class PizzaViewHolder{
TextView title;
TextView subtitle;
}
public myListAdapter(Context context, int textViewResourceId, ArrayList<Pizza> items) {
super(context, textViewResourceId, items);
this.items = items;
// TODO Auto-generated constructor stub
}
@Override
public View getView(int pos, View convertView, ViewGroup parent){
View v = convertView;
if(v == null){
LayoutInflater vi = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.myList_item, null);
myListHolder = new PizzaViewHolder();
myListHolder.title = (TextView)v.findViewById(R.id.title);
myListHolder.subtitle = (TextView)v.findViewById(R.id.subtitle);
v.setTag(myListHolder);
}else myListHolder = (PizzaViewHolder)v.getTag();
Pizza myList = items.get(pos);
if (myList != null){
myListHolder.title.setText(myList.getTitle());
myListHolder.subtitle.setText(myList.getSubTitle());
}
return v;
}
}
Das ist die Suche
private TextWatcher filterTextWatcher = new TextWatcher(){
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
if(!s.equals("")){
((Filterable) this.listView1.getAdapter()).getFilter().filter(s);
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
};