список, кажется, кратко отображается снова после выбора - PullRequest
0 голосов
/ 14 мая 2011

Может кто-нибудь помочь мне, пожалуйста!Я новичок в android и запускаю свое первое приложение.

Идея состоит в том, чтобы запустить вторую (список действий) из действия "main / first" и вернуть выбранный объект обратно первому.Я делаю это с помощью обработчика для получения списка имен классов (пока из array.xml), создания экземпляров классов и добавления их в массив.Я расширяю адаптер массива, чтобы отобразить его.

onActivityResult () в первом действии использует returnData.getParcelableExtra () для «раздувания» выбранного объекта элемента.После выбора элемента из списка список, кажется, снова отображается на долю секунды, прежде чем вернуться к первому действию.Это может быть нормальным поведением, просто "чувствует" и выглядит неправильно.Я делаю что-то неправильно?Вот код для onListItemClick ()

   @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    Intent returnIntent = new Intent();
    returnIntent.putExtra("my.source.selected", (Thing)   this.getListAdapter().getItem(position));
    setResult(RESULT_OK, returnIntent);
    ExampleApplication application = (ExampleApplication) getApplication();
    application.setCurrentlySelectedFormat(this.things.get(position));
    finish(); //gives back the handle to parent activity
}

и для обработчика ...

    private final Handler handler = new Handler() {
    public void handleMessage(final Message msg) {
        super.handleMessage(msg);
        progressDialog.dismiss();
        if ((things == null || things.size() == 0)) {
            empty.setText("No things found");
        } else {
            setListAdapter(new ThingAdapter(SelectThing.this, R.layout.row, things));
        }
    }
};

    private void loadThings() {     
    if (things == null) {           
        final ThingFetcher ff = new ThingFetcher();         
        this.progressDialog = ProgressDialog.show(this, "Working...", " Retrieving things");        
        new Thread() {
            public void run() {
                things = ff.fetchFormats(SelectThing.this);
                handler.sendEmptyMessage(0);
            }
        }.start();
    }
}

@Override
protected void onResume() {
    super.onResume();
    loadThings();
}

Мой адаптер оптимизирован, как кажется, рекомендуется с помощью держателя вида и повторного использования convertViewи т.д.

Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 25 мая 2011

Кажется, проблема не в коде, а в разметке XML для представлений в строках списка. Я последовал этому предложению http://android -developers.blogspot.com / 2009/02 / android-layout-tricks-1.html , и проблема, похоже, устранилась. Нет краткой «перерисовки» списка.

...