我想添加几个事件从数据库检索到一个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”, “ID”: “58”, “姓名”: “一},{” UID “:” Event_5179625c988f60.49787125" , “标识”: “59”,“名称”:“超级 5“},{”uid“:”Event_517969f6ac59d3.04395373“,”id“:”60“,”name“:”Main Event 2013“,},{”uid“:”Event_517ab1f1bb91c0.03505404“ ID“:”61“,”name“:”首先 步骤“}],”tag“:”listimage“}
您有什么建议吗?
在for循环之外声明哪些变量在过程中涉及? – christopher 2013-04-29 16:00:28
此代码对我来说看起来是正确的。你可以添加你正在处理的JSON数据吗? – 2013-04-29 16:04:24
这是我正在处理的JSON数据: {“error”:0,“success”:1,“events”:[{“uid”:“Event_51796139b113d8.73834778”,“id”:“58”,“名称“:”One way},{“uid”:“Event_5179625c988f60.49787125”,“id”:“59”,“name”:“Super 5”},{“uid”:“Event_517969f6ac59d3.04395373”,“id “:”60“,”name“:”主要事件2013“,},{”uid“:”Event_517ab1f1bb91c0。03505404“,”id“:”61“,”name“:”First step“}],”tag“:”listimage“} 我已经声明tornei arraylist:'tornei = new ArrayList我已经更新了这篇文章 –
UserK
2013-04-30 18:25:05