0

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

这是错误

09-14 18:21:07.079: E/JSON(21310): {"tag":"getTopic","success":1,"error":0,"data":[{"title":"Facebook 终于rolls GRAPH Search","tid":"81","time":"2013-06-22 10:05:18"},{"title":"什么是 Ubuntu for Android?","tid":" 69","time":"2013-06-22 10:18:00"},{"title":"Android 和 Windows 在同一设备上(三星)","tid":"98","time": "2013-06-22 10:18:35"},{"title":"\"Tweet\" 已被验证为英文真词","tid":"67","time":"2013 -06-22 10:27:33"},{"title":"Instagram 现在有视频录制","tid":"97","time":"2013-06-22 10:27:45"},{"title":"一封致 DBanj 的公开信","tid":"70","time":"2013-06 -22 10:31:41"},{"title":"MTN 通话率 wahala","tid":"84","time":"2013-06-22 10:32:44"},{" title":"女性必备的朋友类型","tid":"33","time":"2013-06-22 10:45:41"},{"title":"不求回报","tid":"106","time":"2013-06-22 18:15:06"},{"title":"我爱你","tid":"107", "time":"2013-06-22 18:28:56"},{"title":"我讨厌!!!","tid":"115","time":"2013-06-23 19:06:26"},{"title":"Spoils of love","tid":"116","time":"2013-06-23 19:14:43"} ,{"title":"一封男人给女人的道歉信","tid":"117","time":"2013-06-26 12:43:02"},{"title":"斋月开始明天(在 sha Allah)!!!","tid":"120","time":"2013-07-09 15:06:09"},{"title":"防止婚姻不忠", "tid":"29","time":"2013-07-14 12:06:31"},{"title":"如何建立健康的关系","tid":"121","time ":"2013-08-02 17:17:32"},{"title":"ASUU 罢工不会很快结束","tid":"124","time":"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","time":"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结果没有被处理可能是什么问题..

4

2 回答 2

2

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

于 2013-09-14T17:48:30.283 回答
1

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

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

应该

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

...使用更具描述性的变量名称,例如

JSONArray feedArray = result.getJSONArray("data");
于 2013-09-14T18:14:25.747 回答