我在listview中添加从webservice(json响应)获得的图像和数据 . 有些时候图像存在于数组中,有时没有图像,如果图像存在于数组中,那么我得到正确的输出图像和数据将显示在列表视图中但如果数组中没有图像那么即使数据存在但它也不会显示listview中的任何内容 . 在这里挣扎如果声明以下是我的代码任何答案将不胜感激任何人可以帮助吗?
ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
// Creating JSON Parser instance
JSONParser jParser = new JSONParser();
// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(URL);
try {
JSONArray posts = json.getJSONArray(KEY_POSTS);
// looping through all song nodes <song>
for(int i = 0; i < posts.length(); i++){
JSONObject c = posts.getJSONObject(i);
// Storing each json item in variable
String id = c.getString(KEY_ID);
String title = c.getString(KEY_TITLE);
String date = c.getString(KEY_DATE);
String content = c.getString(KEY_CONTENT);
// to remove all <P> </p> and
and replace with ""
content = content.replace("
", "");
content = content.replace("<p>", "");
content = content.replace("</p>", "");
//authornumber is agin JSON Object
JSONObject author = c.getJSONObject(KEY_AUTHOR);
String name = author.getString(KEY_NAME);
JSONArray atta = c.getJSONArray("attachments");
for(int j = 0; j < atta.length(); j++){
JSONObject d = atta.getJSONObject(j);
String slug = d.getString(KEY_SLUG);
JSONObject images = d.getJSONObject(KEY_IMAGES);
JSONObject thumbnail = images.getJSONObject(KEY_THUMB_URL);
String url = thumbnail.getString(KEY_URL);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(KEY_ID, id);
map.put(KEY_TITLE, title);
map.put(KEY_DATE, date);
map.put(KEY_NAME, name);
map.put(KEY_CONTENT, content);
map.put(KEY_SLUG, slug);
map.put(KEY_URL, url);
// adding HashList to ArrayList
songsList.add(map);
} }
} catch (JSONException e) {
e.printStackTrace();
}
list=(ListView)findViewById(android.R.id.list);
list.setOnScrollListener(this);
// Getting adapter by passing json data ArrayList
adapter=new LazyAdapter(this, songsList);
list.setAdapter(adapter);
2 回答
这是因为你在一个单独的
try-catch
块中做了所有事情 . 当没有图像时,它会抛出一个错误,跳出你的循环 . 您应该单独添加try-catch
块来读取图像:在listAdapter的getView()方法中检查url值 . 如果它为空或为空,则显示一些存根图像(某些图像,如无图像可用 - >将其保存在res中) .