来自php页面的JSON值未显示

时间:2013-09-14 17:36:55

标签: java android json

虽然这只是一个粗略的草图..我只是想看看它是否会起作用。任何时候我运行该程序它不会崩溃,它不显示任何东西。 logcat上显示的错误是php页面的JSON结果..我不知道为什么Postexecute()方法不起作用...

这是错误

  

09-14 18:21:07.079:E / JSON(21310):   { “标记”: “getTopic”, “成功”:1, “错误”:0, “数据”:[{ “标题”:“脸谱   最后滚动GRAPH搜索“,”tid“:”81“,”时间“:”2013-06-22   10:05:18“},{”title“:”什么是Ubuntu   Android?“,”tid“:”69“,”time“:”2013-06-22 10:18:00“},{”title“:”Android   和Windows在同一设备(三星)“,”tid“:”98“,”时间“:”2013-06-22   10:18:35“},{”title“:”\“Tweet \”已被证实为真实的单词   英语“,”tid“:”67“,”time“:”2013-06-22 10:27:33“},{”title“:”Instagram   现在有视频录制“,”tid“:”97“,”时间“:”2013-06-22   10:27:45“},{”title“:”给...的公开信   DBanj“,”tid“:”70“,”time“:”2013-06-22 10:31:41“},{”title“:”MTN电话   rate wahala“,”tid“:”84“,”time“:”2013-06-22 10:32:44“},{”title“:”Types   对女性必不可少的朋友“,”tid“:”33“,”时间“:”2013-06-22   10:45:41“},{”title“:”不被爱   return“,”tid“:”106“,”time“:”2013-06-22 18:15:06“},{”title“:”我在   爱你“,”tid“:”107“,”时间“:”2013-06-22 18:28:56“},{”title“:”我   讨厌它!!!“,”tid“:”115“,”时间“:”2013-06-23 19:06:26“},{”title“:”Spoils   of love“,”tid“:”116“,”time“:”2013-06-23 19:14:43“},{”title“:”An   从男人到女人的道歉信“,”tid“:”117“,”时间“:”2013-06-26   12:43:02“},{”title“:”斋月明天开始(在真主中)   !!!“,”tid“:”120“,”time“:”2013-07-09 15:06:09“},{”title“:”预防   对你的婚姻不忠“,”tid“:”29“,”时间“:”2013-07-14   12:06:31“},{”title“:”如何健康   关系“,”tid“:”121“,”时间“:”2013-08-02 17:17:32“},{”title“:”ASUU   罢工不会很快结束“,”tid“:”124“,”时间“:”2013-08-27   12:56:26“},{”title“:”Google宣布Android 4.4   KitKat“,”tid“:”126“,”time“:”2013-09-06 20:51:32“},{”title“:”Apple   推出iPhone 5s和iPhone 5c“,”tid“:”127“,”时间“:”2013-09-11   15点29分40" 秒}]}

这是班级

import java.util.ArrayList;
import java.util.HashMap;

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

import com.nairation.library.JSONParser;
import com.nairation.library.UserFunctions;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

public class Topic_page extends Activity implements OnItemClickListener{

    public static final String TOPIC_DURATION = "relative";
    public static final String TOPIC_TITLE = "title";
    public static final String TOPIC_PREVIEW = "Testing out";
    public static final String TOPIC_ID = null;
    public static final Object TOPIC_THUMB_URL = null;

    ListView list;
    TopicListAdapter adapter;
    UserFunctions userf;
    JSONParser jpa;
    ArrayList<HashMap<String, String>> topicList = new ArrayList<HashMap<String,String>>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.topic_page);

        list = (ListView) findViewById(R.id.topic_list);
        adapter = new TopicListAdapter(this, topicList);
        list.setAdapter(adapter);
        list.setOnItemClickListener(this);

        try{
            new ServiceSync().execute("mash");
        }catch(Exception e){
            String message = e.getMessage();
        }

    }

    private class ServiceSync extends AsyncTask<String, JSONObject, JSONObject>{

        @Override
        protected JSONObject doInBackground(String... params) {
            // TODO Auto-generated method stub
            String uname = params[0];
            userf = new UserFunctions();
            JSONObject jp = userf.getTopic(uname);
            return jp;
        }

        @Override
        protected void onPostExecute(JSONObject result) {
            // TODO Auto-generated method stub
            //super.onPostExecute(result);
            try {
                JSONArray obj = result.getJSONArray("data");

                for (int i = 0; i < result.length(); i++) {
                    JSONObject data = obj.getJSONObject(i);
                    HashMap<String, String> map = new HashMap<String, String>();

                    String title = data.getString(TOPIC_TITLE);
                    String time = data.getString("time");
                    String tid = data.getString("tid");

                    map.put(TOPIC_TITLE, title);
                    map.put("Date", time);

                    topicList.add(map);
                }
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), "Problem with loading the feeds", Toast.LENGTH_LONG).show();
            }
        }

    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // TODO Auto-generated method stub

    }
}

那么可能是JSON结果未被处理的问题..

2 个答案:

答案 0 :(得分:2)

如果不工作,则意味着您无法在列表中看到已解析的数据,那么只要在将列表设置为之后修改基础列表,就需要调用 adapter.notifyDataSetChanged()方法适配器

答案 1 :(得分:1)

你的错误吐司应该显示,我认为这是你的错误:

for (int i = 0; i < result.length(); i++)

应该是

for (int i = 0; i < obj.length(); i++)

...使用更多描述性变量名称,如

JSONArray feedArray = result.getJSONArray("data");