将runonuthread转换为AsyncTask



我在一些链接中阅读,我需要将我的runOnUiThread转换为AsyncTask:Android: runonuthread vs AsyncTask

但是我无法完成它。我正在实现一个AutoCompleteText从数据库查询。

我的runonuthread连同新线程(它编译):

new Thread(new Runnable() {
        public void run() {
            final DataBaseHelper dbHelper = new DataBaseHelper(ActivityName.this);
            dbHelper.openDataBase();
            item_list = dbHelper.getAllItemNames();
            ActivityName.this.runOnUiThread(new Runnable() {
                public void run() {
                    ArrayAdapter<String> sAdapter = new ArrayAdapter<String>(
                            ActivityName.this,
                            android.R.layout.simple_dropdown_item_1line,
                            item_list);
                    itemNameAct = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView_item_name);
                    itemNameAct.setAdapter(sAdapter);
                }
            });
        }
    }).start();

我把工作线程部分在doInBackground和runonuthread部分的代码在onPostExecute,但它崩溃的启动

这很尴尬。我问了一个问题,现在我自己回答:/实际上,我正在尝试AsyncTask(对象,Void,游标),它对我没有任何好处。

下面是正在工作的类:

class autoComplete extends AsyncTask<Void, Void, Void> {
    final DataBaseHelper dbHelper = new DataBaseHelper(ActivityName.this);
    @Override
    protected Void doInBackground(Void... params) {
        dbHelper.openDataBase();
        item_list = dbHelper.getAllItemNames();
        return null;
    }
    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        ArrayAdapter<String> sAdapter = new ArrayAdapter<String>(
                ClassName.this, android.R.layout.simple_dropdown_item_1line,
                item_list);
        itemNameAct= (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView_item_name);
        itemNameAct.setAdapter(sAdapter);
    }
}

然后在onCreate中将它初始化为:

new autoComplete().execute();

相关内容

  • 没有找到相关文章

最新更新