Java jsonObject中的列表
我通过以下方式从服务器获得响应:Java jsonObject中的列表,java,android,arrays,android-recyclerview,Java,Android,Arrays,Android Recyclerview,我通过以下方式从服务器获得响应: { "ownerName": "theName", "site": "theSite", "group": "theGroup", "honours": [ { "id": 189, "name": "Assistant Professor" }, { "id": 226, "name": "of the Four Winds" }, { "id": 227, "name": " Defender of a Sh
{
"ownerName": "theName",
"site": "theSite",
"group": "theGroup",
"honours": [
{
"id": 189,
"name": "Assistant Professor"
}, {
"id": 226,
"name": "of the Four Winds"
}, {
"id": 227,
"name": " Defender of a Shattered World"
}, {
"id": 228,
"name": "Dragonslayer %s"
}, {
"id": 229,
"name": " Blackwing's Bane"
}, {
"id": 278,
"name": "Firelord %s"
}, {
"id": 342,
"name": " Storm's End"
}, {
"id": 477,
"name": "Fabulous",
"selected": true
}]
}
我想访问该列表并设置一个TextView#setText
,以便在荣誉
列表中同时包含所有者姓名
和姓名
。在使用POJO模型循环和解析json
响应之后,我以这种方式使用RecyclerView.Adapter#onbindveholder
@Override
public void onBindViewHolder(CharacterTitlesAdapter.CharacterTitlesViewHolder holder, int position) {
CharacterTitleModel item = characterTitleModels.get(position);
holder.itemView.setTag(item);
Log.d("Titles size: ", String.valueOf(item.getTitles().size()));
for(int i = 0; i < item.getTitles().size(); i++){
TitleModel lt = item.getTitles().get(i);
holder.titleName.setText(lt.getName().replace("%", item.getCharacterName() + "'"));
}
@覆盖
BindViewHolder上的公共无效(CharacterTitleAdapter.CharacterTitleViewHolder,int位置){
CharacterTitleModel项=characterTitleModels.get(位置);
holder.itemView.setTag(项目);
Log.d(“标题大小:”,String.valueOf(item.getTitles().size());
对于(int i=0;i
当我像上面那样在列表中循环时,我只得到列表中的最后一项。如果我使用int位置
,我得到列表中的第一项
如何访问JSON响应列表中的所有项
注:我知道我基本上只能解析honors
json数组,但我需要ownerName
非常感谢您的帮助。如果您知道如何获取Honors JSON数组,那么您也应该能够提取ownerName 您将需要执行以下类似操作:
JSONObject root = new JSONObject(yourJSONString);
String ownerName = root.getString("ownerName");
JSONArray honoursArray = root.getJSONArray("honours");
然后从Honorsarray中获取所需内容,访问
所有者名称
,使用哈希映射
,使用put
方法插入所有者名称
,站点
等的值。然后使用数组列表
添加所有荣誉
数组。在下面的示例中,哈希已声明映射
:
ResponseModel responseModel = gson.fromJson(theJsonResponse,
ResponseModel.class);
hashMap.clear();
hashMap.put("response", responseModel);
然后在RecyclerView.onBindViewHolder
中使用hashMap.get(对象键)
获取值:
final ResponseModel item=hashMap.get(“响应”);
我希望这对某些人有所帮助。如果我只解析Honors数组,我将无法访问RecyclerView#onBindViewHolder中的所有者名称,因为我将使用HonorsModel,因此我希望在
onBindViewHolder
中使用语法或方法,以使我能够访问所有者名称
和Honors
数组。在哪里您最初解析JSON了吗?您的模型类是什么样子的?这里没有足够的信息来进一步帮助您。为什么不发布完整的适配器类和模型类呢。