Я пытаюсь добавить несколько событий, извлеченных из базы данных, в ArrayList, чтобы заполнить список. Я создал класс событий, и я создал все методы.Как добавить элементы в 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 строка анализируется:
{ "Ошибка": 0, "успех" : 1, "события": [{ "UID": "Event_51796139b113d8.73834778", "идентификатор": "58", "имя": "Один}, {" UID ":" Event_5179625c988f60.49787125" , "идентификатор": «59», «name»: «Super 5 "}, {" uid ":" Event_517969f6ac59d3.04395373 "," id ":" 60 "," name ":" Main Событие 2013 ",}, {" uid ":" Event_517ab1f1bb91c0.03505404 "," идентификатор ":" 61" , "имя": "Первый шаг "}], "тег": "listimage"}
есть ли у вас какие-либо советы?
Какие переменные объявлены вне цикла for, которые участвуют в этом процессе? – christopher
Этот код выглядит правильно для меня. Можете ли вы добавить данные JSON, которые вы обрабатываете? –
Это данные JSON, которые обрабатываются: {"error": 0, "success": 1, "events": [{"uid": "Event_51796139b113d8.73834778", "id": "58", " name ":" One way}, {"uid": "Event_5179625c988f60.49787125", "id": "59", "name": "Super 5"}, {"uid": "Event_517969f6ac59d3.04395373", "id ":" 60 "," name ":" Main Event 2013 ",}, {" uid ":" Event_517ab1f1bb91c0.03505404 "," id ":" 61 "," name ":« Первый шаг »}],« tag »:« listimage »} Я объявил tornei arraylist:' tornei = new ArrayList(); ' в редакторе onCreate. Я обновил сообщение. –
UserK