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 が同じデバイス (samsung)","tid":"98","time": "2013-06-22 10:18:35"},{"タイトル":"\"ツイート\" は英語で実在することが確認されています","tid":"67","時刻":"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"},{"タイトル":"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":"ラマダンが始まる明日 (シャ アッラーで) !!!","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

動作していないということは、解析されたデータが list に表示されないことを意味する場合、そのためには、リストをアダプターに設定した後に基になるリストが変更されるたびに、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 に答える