0

リストビューを作成するために、データベースから取得したいくつかのイベントを ArrayList に追加しようとしています。イベント クラスを作成し、すべてのメソッドをセットアップしました。

EventsFunctions eventsFunctions;
JSONParser jParser = new JSONParser();
JSONArray events = null;
ArrayList<Torneo> tornei;

    @Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.all_events);

    tornei= new ArrayList<Torneo>();
    LoadAllEvents eventsLoader = new LoadAllEvents();
    [...]
 }

/**
 * Background Async Task to Load all product by making HTTP Request
 * */
public class LoadAllEvents extends AsyncTask<String, Integer, JSONObject> 
{
    LoadAllEvents()
    {
        eventsFunctions = new EventsFunctions();
    }

    @Override
    protected void onPreExecute() 
    {
      [...]
    }

    protected JSONObject doInBackground(String... params) 
        {   
            String a = "code1";
            // getting JSON string from URL
            return eventsFunctions.eventList(a);
        }

        protected void onPostExecute(JSONObject json) 
        {

            // Check your log cat for JSON reponse
            Log.d("All Events list data: ", json.toString());

            try 
            {
                // Checking for SUCCESS TAG
                String success = json.getString(TAG_SUCCESS);
                if (success != null) 
                {
                    if (Integer.parseInt(json.getString(TAG_SUCCESS)) != 0)
                    {
                        // events found
                        // Getting Array of Events
                       events = json.getJSONArray(TAG_EVENTS);
                       Log.e("AllEventsActivity"," "+ Integer.toString(events.length())+ " events received from the database");

これはコードの関連部分です

// looping through All Products    
                         for (int i = 0; i < events.length(); i++) 
                            {
                                JSONObject c = events.getJSONObject(i);

                                // Storing each json item in variable
                                String id   = c.getString(TAG_UID);
                                String name     = c.getString(TAG_NAME);


                                Torneo torneo = new Torneo();
                                torneo.setName(name);

                                Log.e("AllEventsActivity", "Tournament name: " + torneo.getName());

                                tornei.add(i,torneo); //Or just tornei.add(torneo);


                            }

                            for (int j=0; j<tornei.size() ;j++ )
                            {
                                Log.e("AllEvents Reporter", "Torneo numero: "+ j + " Nome: " + tornei.get(j).getName());
                            }

                    }

そして AsyncTask 実装の終わり:

    else if (Integer.parseInt(json.getString(TAG_SUCCESS)) != 0)
            {
                Log.d("Events Report: ", "NO events scheduled");

            }
        }
    } catch (JSONException e) 
    {
        e.printStackTrace();
    }
    // updating UI from Background Thread
    [...]

}

そして、これは出力です:

E/AllEventsActivity(10785):  4 events received from the database
E/AllEventsActivity(10785): Tournament name: One way
E/AllEventsActivity(10785): Tournament name: Super 5
E/AllEventsActivity(10785): Tournament name: Main Event 2013
E/AllEventsActivity(10785): Tournament name: First step
E/AllEvents Reporter(10785): Torneo numero: 0 Nome: First step
E/AllEvents Reporter(10785): Torneo numero: 1 Nome: First step
E/AllEvents Reporter(10785): Torneo numero: 2 Nome: First step
E/AllEvents Reporter(10785): Torneo numero: 3 Nome: First step
I/MemoryCache(10785): MemoryCache will use up to 16.0MB
D/dalvikvm(10785): GC_FOR_ALLOC freed 153K, 7% free 12544K/13383K, paused 22ms, total 22ms
I/dalvikvm-heap(10785): Grow heap (frag case) to 12.958MB for 262160-byte allocation

Arraylist に格納されている唯一のイベントは、for ループに追加された最後の要素のようです。

ログは次のようになっているはずです。

E/AllEvents Reporter(10785): Torneo numero: 0 Nome: One way
E/AllEvents Reporter(10785): Torneo numero: 1 Nome: Super 5
E/AllEvents Reporter(10785): Torneo numero: 2 Nome: Main Event 2013
E/AllEvents Reporter(10785): Torneo numero: 3 Nome: First step

これは解析された json 文字列です。

{"error":0,"success":1,"events":[{"uid":"Event_51796139b113d8.73834778","id":"58","name":"One},{"uid": "Event_5179625c988f60.49787125","id":"59","name":"スーパー 5"},{"uid":"Event_517969f6ac59d3.04395373","id":"60","name":"メイン イベント2013",},{"uid":"Event_517ab1f1bb91c0.03505404","id":"61","name":"最初のステップ"}], "tag":"listimage"}

何かアドバイスはありますか?

4

1 に答える 1