Android: ListView not refreshing on notifyDataSetChanged();

У меня есть пользовательский BaseAdapter и кнопка добавления в основной активности. Кнопка открывает диалог с текстовым полем, и таким образом можно добавлять новые элементы в список. Проблема в том, что список не обновляется. В функции onActivityResult() я печатаю количество элементов в списке, и каждый раз, когда я нажимаю кнопку OK в диалоговом окне, количество увеличивается, поэтому я знаю, что просто не работает обновление. Мой BaseAdapter и моя активность:

class ListaOrase extends BaseAdapter{
    private Activity context;
    ArrayList<String> orase;

    public ListaOrase(Activity context){
        this.context=context;
        orase=new ArrayList<String>();
    }
    public void add(String string){
        orase.add(string);
        this.notifyDataSetChanged();
    }

    public View getView (int position, View convertView, ViewGroup list)  {
        View element;
        if (convertView == null)
        {
         LayoutInflater inflater = context.getLayoutInflater();
         element = inflater.inflate(R.layout.lista, null);
        }
        else element = convertView;
        TextView elementLista=(TextView)element.findViewById(R.id.elementLista);    
        elementLista.setText(orase.get(position));
        return element;
    }

}

public class WeatherAppActivity extends ListActivity {

    Button buton;
    ListaOrase lista;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        lista=new ListaOrase(this);
        buton=(Button)findViewById(R.id.buton);


        lista.add("Bucuresti");
        lista.add("Sibiu");
        setListAdapter(lista);

    }

    public void add(View view){
        Intent intent=new Intent();
        intent.setClass(this, Adauga.class);
        startActivityForResult(intent, 0);
    }

    public void onActivityResult (int requestCode, int responseCode, Intent data){
        System.out.println("Apelata");
        if(responseCode==1){
            lista.add(data.getStringExtra("oras")); // e chiar getText()
            System.out.println(lista.getCount());
            lista.notifyDataSetChanged();
        }
    }
}

Как вы видите, я пытаюсь обновить (notifyDataSetChanged();) как при добавлении нового элемента (в расширяющем классе BaseAdapter), так и в методе onActivityResult, после того как диалог передает новый элемент в главную Activity. Повторяю, элемент добавляется в список, потому что счетчик увеличивается, он просто не обновляется.

Спасибо за ответы!

6
задан FloIancu 3 December 2011 в 18:44
поделиться