gpt4 book ai didi

android - 使用 AsyncTask 从数据库中读取项目

转载 作者:太空狗 更新时间:2023-10-29 16:40:46 26 4
gpt4 key购买 nike

我决定添加一个 AsyncTask到我的应用程序中的一个 fragment ,以便更有效地从数据库接收项目。

我将泛型设置为 Void, Void, List<Object> (其中 Object 是我创建的对象),内部方法如下:

private class GetObjectsTask extends AsyncTask<Void, Void, List<Object>> {

@Override
protected List<Object> doInBackground(Void... params) {
SQLiteDatabase db = mDbHelper.getInstance(getActivity().getApplicationContext()).getReadableDatabase();

String[] projection = {
.........
};

String sortOrder = ...;

Cursor c = db.query(TABLE_NAME, projection, null, null, null, null, sortOrder);

while(c.moveToNext()) {
long itemId = ...;
String title = ...;
long startMil = ...;
long endMil = ...;

mList.add(new Object(itemId, title, new Date(startMil), new Date(endMil), null, null));
}

db.close();
return mList;
}
}

下面是我如何从同一个 fragment 调用任务:
new GetObjectsTask().execute((Void[]) null);

任务执行后,我设置了一个 ListView 来显示数组中的项目。
之前在没有任务的情况下使用了完全相同的代码,因此它应该可以工作。问题是 - 它没有。 mList是在持有这个内部任务类的 fragment 中定义的,所以我希望它能工作。

什么会导致这种行为?
此外,是否有可能(并推荐)使任务设置 ListView 以显示返回的项目? (通过覆盖 onPostExecute(Result) )

谢谢!

最佳答案

onPostExecute(Result) 正是您应该初始化 ListView 和设置适配器的地方。原因 onPostExecute() 正在主 UI 线程中运行。

关于android - 使用 AsyncTask 从数据库中读取项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18155784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com