gpt4 book ai didi

Android - 使用 AsycTaskLoader 和 MySql 填充列表

转载 作者:行者123 更新时间:2023-11-29 14:16:55 25 4
gpt4 key购买 nike

我想用从 MySql 数据库加载的某些对象填充 ListFragment。

它必须从我的结果集中加载前 10 个“对象”。我想为此使用 AsyncTaskLoader,并在每次从数据库检索加载的对象时将其放入 ListItem 中。

有人可以帮我解决这个问题吗?尝试寻找好的示例或教程,但我还没有真正找到真正有用的东西......

最佳答案

在预执行方法中使用新列表创建适配器。将该适配器设置为您的 ListView 。

然后在 doInBackground 中读取数据库,创建对象以适合您的列表,但不要添加它们。将每个对象作为publishprogress方法的参数传递。

在 onProgressUpdate 中将您的对象添加到列表中并通知您的适配器数据集已更改。

下面是我如何读取 Twitter 通话的示例。

private class parseTwitterTask extends AsyncTask<Void, TCListObject2, List<TCListObject2>> {
TCListObjectAdapter2 adapter;
List<TCListObject2> list;

@Override
protected void onPreExecute() {
list = new ArrayList<TCListObject2>();
ListView lv = (ListView)findViewById(R.id.twitterlist);
adapter = new TCListObjectAdapter2(list);
lv.setAdapter(adapter);
super.onPreExecute();
}

@Override
protected List<TCListObject2> doInBackground(Void... params) {
try {
String url = social.get("twittersearchurl");//"http://search.twitter.com/search.json?q=" + social.get("twitter");
String json = Internet.request(url, null);
JSONObject jo = new JSONObject(json);
if(jo.has("results")) {
JSONArray ar = jo.getJSONArray("results");
for(int i = 0; i < ar.length(); i++) {
TCListObject2 tweet = new TCListObject2();
JSONObject jobj = (JSONObject) ar.get(i);
tweet.id = "false";
tweet.img = jobj.getString("profile_image_url");

String text = jobj.getString("text");
text = Html.fromHtml(text).toString();
tweet.params.put(R.id.sub2, text);

String name = jobj.getString("from_user");
name = Html.fromHtml(name).toString();
tweet.params.put(R.id.text, name);

String time = jobj.getString("created_at");
tweet.params.put(R.id.sub1, Converter.timeToTimeAgo(time));

try {
tweet.time = new Date(time);
} catch(Exception e) {
e.printStackTrace();
}

tweet.celLayout = R.layout.cell_tweetobject;
publishProgress(tweet);
}
}
} catch(Exception e) {
e.printStackTrace();
}

return list;
}

@Override
protected void onProgressUpdate(TCListObject2... values) {
list.add(values[0]);
adapter.notifyDataSetChanged();
super.onProgressUpdate(values);
}

关于Android - 使用 AsycTaskLoader 和 MySql 填充列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12493617/

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