gpt4 book ai didi

Android ArrayAdapter 和 JSONArray

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

我是 Android 开发新手。

考虑到 JSON Carrier 与 XML 相比的轻便性,我纯粹喜欢在我的简单应用程序中使用 JSON 对象和数组。

我在使用 ArrayAdapter 填充 ListView 时遇到了挑战。

这就是我克服困难的方法,需要您的建议。

Extend the Adaptor class.

然后将 JSONArray 传递给构造函数。
在这里,构造函数调用 super 并使用 dummy 字符串数组设置 JSONArray 的长度。
将构造函数参数存储在类中以供进一步使用。

public myAdaptor(Context context, int resource, JSONArray array)
{
super(context, resource, new String[array.length()]);
// Store in the local varialbles to the adapter class.
this.context = context;
this.resource = resource;
this.profiles = objects;
}

getView() 将完成从 JSONArray 中获取 JSONObject 以构建 View 的工作。

public View getView(int position, View convertView, ViewGroup parent)
{
View view;
if (convertView == null)
{
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(resource, parent, false);
}
else
{
view = convertView;
}

// Here
JSONObject item = (JSONObject) profiles.getJSONObject(position);

// READY WITH JSONObject from the JSONArray
// YOUR CODE TO BUILD VIEW OR ACCESS THE
}

现在有什么改进/建议/问题吗??

最佳答案

我建议您使用 google GSON 而不是 JSON。它是一个库,可以让你从 JSON 请求创建对象,你不需要再解析 JSON。只需创建一个包含来自 JSON 请求的所有字段且名称相同的对象,然后随心所欲地使用它 - 例如:

Your JSON request
{
[
{
"id": "2663",
"title":"qwe"

},
{
"id": "1234",
"title":"asd"
},
{
"id": "5678",
"title":"zxc"
}

]
}

你的类(class) - JSON 数组的项目

 public class MyArrayAdapterItem{
int id;
String title;
}

在您下载数据的代码中的某处。我不知道你是怎么做到的,所以我会发布我的代码,例如:

mGparser = new JsonParser();
Gson mGson = new Gson();

Url url = "http://your_api.com"
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Connection", "close");
conn.connect();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

JsonArray request = (JsonArray) mGparser.parse(in.readLine());
in.close();
ArrayList<MyArrayAdapterItem> items = mGson.fromJson(request, new TypeToken<ArrayList<MyArrayAdapterItem>>() {}.getType());

就是这样,现在只需将“items”而不是 JSON 数组放入适配器的构造函数中

关于Android ArrayAdapter 和 JSONArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20466964/

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