Android Custom ArrayAdapter не обновляется после фильтра

Так что у меня есть обычайArrayAdapter так что я могу использовать представление заголовка / субтитра, которое доступно наListView, у меня естьEditText который принимает строку и фильтрует адаптер.

Фильтр работает в том смысле, что он фильтрует правильные объекты (я могу сказать, щелкнув по нему, и он начинает намерение с правильных «дополнений».)

Однако даже если фильтрация работает, элементы в адаптере не обновляются для отображения правильной информации ... Название и подзаголовок неверны.

Допустим, у нас есть пункты с 0 по 9 наListView, Я фильтрую по 3 элементам с помощью поиска и, скажем, отфильтрованные элементы имеют 5, 6, 9 ... 3 элемента, но это первые 3 элемента исходного предварительного поискаListView (0-2). Если я нажму на пункт 2 (третий пункт), содержание 9 содержится в новом намерении. Это верно для критериев поиска, однако заголовок действительно отражает правильную информацию.

Я не уверен, что мне нужно сказатьListView обновить. Я не думаю, что этоnotifyDataSetChanged();

Любая помощь приветствуется. Спасибо!

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

Это поиск

    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

    }

};

Ответы на вопрос(1)

Ваш ответ на вопрос