【发布时间】:2017-04-10 14:39:43
【问题描述】:
我正在尝试创建一个 Android 类来创建其他应用程序的列表,以便稍后显示,直到现在我有以下代码用于创建列表(取自谷歌示例):
public final class AppList {
public static List<App> list;
public static List<App> setupApp() {
list.add(buildAppInfo(
"Browsers",
"chrome",
"description",
"Google Inc.",
"com.android.chrome",
"http://...",
"http://..."
));
list.add(buildAppInfo(
"Browsers",
"Firefox",
"description",
"Mozilla",
"com.mozilla.firefox",
"http://...",
"http://..."
));
[An so on...]
return list;
}
private static App buildAppInfo(String category,
String title,
String description,
String developer,
String packageName,
String iconImageUrl,
String bgImageUrl) {
App app = new App();
app.setId(App.getCount());
App.incCount();
app.setTitle(title);
app.setDescription(description);
app.setDeveloper(developer);
app.setCategory(category);
app.setIconImageUrl(iconImageUrl);
app.setBackgroundImageUrl(bgImageUrl);
app.setPackageName(packageName);
return app;
}
}
//From here everything is handled in other activity
我希望从 Web 服务器动态加载详细信息,我可以将其设置为提供 JSONArray 或 XML,然后将该数据放在列表中。对于我正在阅读的内容,我可以使用 Volley,但总的来说,我在 Volley 或 Java 方面不是很有经验(我只是在学习中),所以我对如何继续没有太多想法。
我从谷歌开发者网站找到了example。我正在考虑添加这样的内容:
public final class AppList {
public static List<App> list;
public static List<App> setupApp() {
/*Json Request*/
String url = "https://json_url/";
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
list.add(response);//ADD ITEMS TO LIST HERE
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
return list;
}
private static App buildAppInfo(String category,
String title,
String description,
String developer,
String packageName,
String iconImageUrl,
String bgImageUrl) {
App app = new App();
app.setId(App.getCount());
App.incCount();
app.setTitle(title);
app.setDescription(description);
app.setDeveloper(developer);
app.setCategory(category);
app.setIconImageUrl(iconImageUrl);
app.setBackgroundImageUrl(bgImageUrl);
app.setPackageName(packageName);
return app;
}
}
从服务器提要收到的数据应该是这样的:
buildAppInfo(
"Browsers",
"Firefox",
"description",
"Mozilla",
"com.mozilla.firefox",
"http://...",
"http://..."
)
buildAppInfo(
"Browsers",
"Firefox",
"description",
"Mozilla",
"com.mozilla.firefox",
"http://...",
"http://..."
)
[...]
//BUT IN JSON FORMAT
我的整个方法显然行不通。有人可以帮我实现我需要的吗?谢谢。
【问题讨论】:
-
你必须把那个JsonObject转换成数组格式,比如ContentValues,hashMap,然后把那个数组给你的listview,直接JsonObject是不行的。
标签: java android json xml android-volley