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

    }

};

Antworten auf die Frage(1)

Ihre Antwort auf die Frage