リストビューを作成するために、データベースから取得したいくつかのイベントを 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"}
何かアドバイスはありますか?