在Android ListView中阅读高级JSON

时间:2012-03-10 08:10:25

标签: android json listview sdk

Ok我需要做的是使用以下json文件

的以下内容
"result":"success",
"threads":{
"34203_27542076":{
"pulse_updates_id":34203,
"poster_id":27542076,
"date_posted":"2012-03-09 22:00:22",
"last_updated":"2012-03-09 22:00:22",
"source":"",
"content":"anyone want to hang out it me up \n",
"how_long_ago":"<span class='notranslate'>2<\/span> minutes ago",
"avatar_pic_url":"http:\/\/userimages-akm.imvu.com\/catalog\/includes\/modules\/phpbb2\/images\/avatars\/27542076_6734834444f582fd06ebbb.png",
"avatar_name":"LordDragonNickFire00",
"is_vip":0,
"has_ap":true,
"is_staff":false,
"is_friend":true,
"deleted":"0",
"comments":[
],
"total_comments":0
},
"105955_38856955":{
"pulse_updates_id":105955,
"poster_id":38856955,
"date_posted":"2012-03-09 21:52:44",
"last_updated":"2012-03-09 21:52:44",
"source":"",
"content":"A real IMVU Droid app now has a release date and is coming soon...\n\nMajor update is the Login it now keeps your session o-o",
"how_long_ago":"<span class='notranslate'>10<\/span> minutes ago",
"avatar_pic_url":"http:\/\/userimages-akm.imvu.com\/catalog\/includes\/modules\/phpbb2\/images\/avatars\/38856955_8130690014f3f36e3492e7.png",
"avatar_name":"Toyz",
"is_vip":1,
"has_ap":true,
"is_staff":false,
"is_friend":false,
"deleted":"0",
"comments":[
],
"total_comments":0
},
"76541_36258084":{
"pulse_updates_id":76541,
"poster_id":36258084,
"date_posted":"2012-03-09 21:39:57",
"last_updated":"2012-03-09 21:57:47",
"source":"web",
"content":"*sighs*\nNot again..\n*looks down as she turns away & walks 2 disappears*",
"how_long_ago":"<span class='notranslate'>22<\/span> minutes ago",
"avatar_pic_url":"http:\/\/userimages-akm.imvu.com\/catalog\/includes\/modules\/phpbb2\/images\/avatars\/36258084_6723628384f5a1de019b78.png",
"avatar_name":"Tizanidine",
"is_vip":1,
"has_ap":true,
"is_staff":false,
"is_friend":true,
"deleted":"0",
"comments":{
"158451":{
"pulse_comments_id":158451,
"poster_id":36258084,
"pulse_updates_id":76541,
"parent_poster_id":36258084,
"date_posted":"2012-03-09 21:51:57",
"source":"web",
"content":"Jace: *nod quietly* ikr.. v_v",
"how_long_ago":"<span class='notranslate'>10<\/span> minutes ago",
"avatar_pic_url":"http:\/\/userimages-akm.imvu.com\/catalog\/includes\/modules\/phpbb2\/images\/avatars\/36258084_6723628384f5a1de019b78.png",
"avatar_name":"Tizanidine",
"is_vip":1,
"has_ap":true,
"is_staff":false,
"is_friend":true,
"deleted":"0"
},
"158452":{
"pulse_comments_id":158452,
"poster_id":62578061,
"pulse_updates_id":76541,
"parent_poster_id":36258084,
"date_posted":"2012-03-09 21:54:22",
"source":"",
"content":"-Hugs-",
"how_long_ago":"<span class='notranslate'>8<\/span> minutes ago",
"avatar_pic_url":"http:\/\/userimages-akm.imvu.com\/catalog\/includes\/modules\/phpbb2\/images\/avatars\/62578061_9109627814f5aab76a8004.jpg",
"avatar_name":"JaceMashiara",
"is_vip":0,
"has_ap":true,
"is_staff":false,
"is_friend":false,
"deleted":"0"
},
"158453":{
"pulse_comments_id":158453,
"poster_id":36258084,
"pulse_updates_id":76541,
"parent_poster_id":36258084,
"date_posted":"2012-03-09 21:57:47",
"source":"web",
"content":"Jace: *is being hugged as she hugs him back too*",
"how_long_ago":"<span class='notranslate'>4<\/span> minutes ago",
"avatar_pic_url":"http:\/\/userimages-akm.imvu.com\/catalog\/includes\/modules\/phpbb2\/images\/avatars\/36258084_6723628384f5a1de019b78.png",
"avatar_name":"Tizanidine",
"is_vip":1,
"has_ap":true,
"is_staff":false,
"is_friend":true,
"deleted":"0"
}
},
"total_comments":6
},
"165095_56558482":{
"pulse_updates_id":165095,
"poster_id":56558482,
"date_posted":"2012-03-09 21:19:56",
"last_updated":"2012-03-09 21:54:56",
"source":"",
"content":"Goodnight\u2665",
"how_long_ago":"<span class='notranslate'>42<\/span> minutes ago",
"avatar_pic_url":"http:\/\/userimages-akm.imvu.com\/catalog\/includes\/modules\/phpbb2\/images\/avatars\/56558482_9974587834f5ac7431f9d5.jpg",
"avatar_name":"KaylaMioran",
"is_vip":0,
"has_ap":true,
"is_staff":false,
"is_friend":true,
"deleted":"0",
"comments":{
"295959":{
"pulse_comments_id":295959,
"poster_id":85811900,
"pulse_updates_id":165095,
"parent_poster_id":56558482,
"date_posted":"2012-03-09 21:54:56",
"source":"",
"content":"nini baby",
"how_long_ago":"<span class='notranslate'>7<\/span> minutes ago",
"avatar_pic_url":"http:\/\/userimages-akm.imvu.com\/catalog\/includes\/modules\/phpbb2\/images\/avatars\/85811900_13049606984f58e4ec4be4a.jpg",
"avatar_name":"RedVelvetLillie",
"is_vip":0,
"has_ap":false,
"is_staff":false,
"is_friend":false,
"deleted":"0"
}
},
"total_comments":1
},

^抱歉无法进行代码视图

我想做的是能够将头像名称,内容和图像(仅这3个)加载到列表视图中

除了android SDK

之外不能使用任何东西

这也不是家庭作业,这是个人项目......

这就是我的列表adpater目前看起来只是在活动加载时崩溃

package IMVU.For.Droid;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.TextView;

public class PulseADP extends BaseAdapter implements ListAdapter {

    private final Activity activity;
    private final JSONArray jsonArray;
    private static LayoutInflater inflater=null;
    public PulseADP(Activity activity, JSONArray jsonArray) {
        assert activity != null;
        assert jsonArray != null;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        this.jsonArray = jsonArray;
        this.activity = activity;
    }


    public int getCount() {

        return jsonArray.length();
    }

    public JSONObject getItem(int position) {

        return jsonArray.optJSONObject(position);
    }

    public long getItemId(int position) {
        JSONObject jsonObject = getItem(position);

        return jsonObject.optLong("id");
    }
    JSONObject jsonObject = null;
    public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        if(convertView==null)
            vi = inflater.inflate(R.layout.pulse_list, null);

        /*try {
            jsonObject = jsonObject.getJSONObject("threads");
        } catch (JSONException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        JSONArray js = jsonObject.names();

        JSONArray js2;
        try {
            js2 = js.getJSONArray(position);
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }*/

        JSONArray js = null;

        JSONArray js2 = null;
        try {
            js = jsonArray.getJSONArray(1);
            js2 = js.getJSONArray(position);
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        TextView text=(TextView)convertView.findViewById(R.id.textView1);
        TextView s_text=(TextView)convertView.findViewById(R.id.textView2);
        ImageView image=(ImageView)convertView.findViewById(R.id.imageView1);

        try {
            text.setText(js2.getString(8));
            text.setText(js2.getString(5));
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        return convertView;
    }
}

logcat的

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{IMVU.For.Droid/IMVU.For.Droid.Home}: java.lang.NullPointerException
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1852)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1873)
    at android.app.ActivityThread.access$1500(ActivityThread.java:135)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:150)
    at android.app.ActivityThread.main(ActivityThread.java:4352)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
    at IMVU.For.Droid.PulseADP.getCount(PulseADP.java:42)
    at android.widget.ListView.setAdapter(ListView.java:455)
    at IMVU.For.Droid.Home.onCreate(Home.java:33)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1816)
    ... 11 more

2 个答案:

答案 0 :(得分:1)

似乎作为构造函数参数的jsonArray为null。断言对你没有帮助,因为它将被忽略,如here所述。我将此作为答案发布,因为它会指出您特别要求的问题的原因,如果您需要进一步帮助解决您的问题(即添加调用构造函数的代码)。

答案 1 :(得分:0)

您是否提供了完整的JSON文件?似乎有一些验证错误。可能是由此引起的异常。