ArrayAdapter personalizado de Android no se actualiza después del filtro

Así que tengo una costumbreArrayAdapter así que puedo usar la vista Título / Subtítulo que está disponible en elListView. Yo tengo unEditText que acepta una cadena y filtra el adaptador.

El filtro funciona en el sentido de que está filtrando los objetos correctos (lo sé al hacer clic en él y comienza la intención con los "extras" correctos).

Sin embargo, aunque el filtrado funciona, los elementos del adaptador no se actualizan para mostrar la información correcta ... El título y el subtítulo son incorrectos.

Digamos que tenemos artículos del 0 al 9 en elListView, Filtro a 3 elementos con una búsqueda y digamos que los elementos filtrados son 5, 6, 9 ... se muestran 3 elementos, pero son los primeros 3 elementos de la búsqueda previa originalListView (0-2). Si hago clic en el elemento 2 (el tercer elemento), el contenido de 9 está contenido en la nueva intención. Esto es correcto para los criterios de búsqueda, sin embargo, el título reflejó la información correcta.

No estoy seguro de lo que necesito decirle alListView refrescar. No creo que seanotifyDataSetChanged();

Cualquier ayuda es apreciada. ¡Gracias!

    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;           
    }
}

Esta es la busqueda

    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

    }

};

Respuestas a la pregunta(1)

Su respuesta a la pregunta