列表似乎在选择后再次简要显示

时间:2011-05-14 18:16:44

标签: android listview android-activity android-arrayadapter

请有人帮帮我!我是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 :(得分:0)

似乎问题不在代码中,而是在布局xml中,列表中的行中的视图。 我遵循了这个建议http://android-developers.blogspot.com/2009/02/android-layout-tricks-1.html,似乎解决了这个问题。没有简短的“重新呈现”清单。