【发布时间】:2018-06-04 10:49:50
【问题描述】:
我有一个这样的json
{
"News": [
{
"data": {
"id": "963426",
"gallery": [
{
"image_path": "/images/metbuat/images_d/963426_0.jpg"
},
{
"image_path": "/images/metbuat/images_d/963426_1.jpg"
},
{
"image_path": "/images/metbuat/images_d/963426_2.jpg"
}
]
}
},
{
"data": {
"id": "959846",
"gallery": [
{
"image_path": "/images/metbuat/images_d/959846_0.jpg"
},
{
"image_path": "/images/metbuat/images_d/959846_1.jpg"
}
]
}
}
]
}
在解析这个 json 并从中获取数据时,我遇到了问题。它为每个新闻项目添加所有画廊图像。但其他值,如“观看”、“身体”正在添加正确
private ArrayList<FeedNewsItem> feedNewsItemArrayList;
JSONArray jsonArray = response.getJSONArray("News");
for (int i = 0; i < jsonArray.length() - 1; i++)
{
JSONObject newsItem = jsonArray.getJSONObject(i);
JSONObject data = newsItem.getJSONObject("data");
imageUrl = "https://metbuat.az" + data.getString("image_t");
titleText = data.getString("title");
subTitleText = data.getString("sub_title");
watched = data.getString("views_stats");
body = data.getString("details_full");
if (!data.getString("gallery").equals("false"))
{
JSONArray galleryJsonArray = data.getJSONArray("gallery");
// I think problem is here. This block adding all news images to every single news item
for (int j = 0; j < galleryJsonArray.length(); j++)
{
JSONObject imageJsonObject = galleryJsonArray.getJSONObject(j);
imageURL = "https://metbuat.az" + imageJsonObject.getString("image_path");
galleryImagesList.add(imageURL);
}
}
// adding every news details to list one by one
feedNewsItemArrayList.add(new FeedNewsItem(imageUrl, titleText, subTitleText, time,date, watched, body, addDateTimestamp, currentDate, galleryImagesList));
}
...
Intent newsIntent = new Intent(MainActivity.this, NewsActivity.class);
FeedNewsItem clickedItem = feedNewsItemArrayList.get(position);
newsIntent.putStringArrayListExtra(EXTRA_GALLERYLIST, clickedItem.getmGalleryArrayList());
因此,当打开特定新闻时,一切正常,但所有新闻的图库图片出现在单个新闻项中
这是 NewsActivity.java 类中画廊图像的代码
Intent intent = getIntent();
galleryImagesList = intent.getStringArrayListExtra(EXTRA_GALLERYLIST);
private void getGalleryImages()
{
for (int i = 0; i < galleryImagesList.size(); i++)
{
final ImageView imageView = new ImageView(NewsActivity.this);
imageView.setId(i);
imageView.setPadding(2, 2, 2, 2);
imageView.setLayoutParams(new LinearLayout.LayoutParams(250, 250));
imageView.requestLayout();
Picasso.get().load(galleryImagesList.get(i)).into(imageView);
horizontalScrollLayout.addView(imageView);
}
}
在这张图片中,我只需要在红色框中获取这张图片。相反,我在 json 中获取所有带有画廊属性的新闻的所有图像
【问题讨论】:
标签: java android arrays json arraylist