[英]ArrayList not keeping added elements when it leaves method
我有一个Android应用程序,在其中我的onCreate内调用了一个方法,然后在该方法中将对象添加到ArrayList中。 当程序离开该方法时,不会保存所有添加的元素,并且我的arraylist大小为0。有人可以告诉我这个问题吗?
private ArrayList<EventInformation> eventArray = new ArrayList<EventInformation>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTV = (TextView) findViewById(R.id.mTV);
Long tsLong = System.currentTimeMillis()/1000;
final String ts = tsLong.toString();
//String hash = DigestUtils.md5Hex
String url = "";
RequestQueue queue = VolleySingleton.getInstance().getRequestQueue();
JsonObjectRequest obj = new JsonObjectRequest
(Request.Method.GET,
url,
null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
parseJSONResponse(response); // where I call the method
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mTV.setText(ts);
}
});
queue.add(obj);
for (int i = 0; i < eventArray.size(); i++) {
mTV.append("Id: " + String.valueOf(eventArray.get(i).id) + '\n' +
"Title: " + eventArray.get(i).title + '\n' +
"Description: " + eventArray.get(i).description + '\n');
}
display();
}
public void parseJSONResponse(JSONObject response) {
try {
JSONObject ar = response.getJSONObject("data");
int total = ar.getInt("total");
JSONArray arr = ar.getJSONArray("results");
for (int i = 0; i < total; i++) {
JSONObject currentObject = arr.getJSONObject(i);
int id = currentObject.getInt("id");
String title = currentObject.getString("title");
String description = currentObject.getString("description");
String resourceURI = currentObject.getString("resourceURI");
EventInformation toAdd = new EventInformation(id, title, description, resourceURI);
eventArray.add(toAdd); // successfully adds the object
Log.i("tag", String.valueOf(eventArray.size())); //log shows size is 60+ here but after it leaves, it is 0
}
}
catch (JSONException e) {
}
}
我还尝试在onCreate内部和外部初始化ArrayList。 两者具有相同的结果
编辑:logcat:
02-11 21:47:46.451 685-685/kim.albert.marveleventtracker I/tag﹕ 1
02-11 21:47:46.451 685-685/kim.albert.marveleventtracker I/tag﹕ 2
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 3
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 4
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 5
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 6
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 7
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 8
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 9
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 10
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 11
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 12
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 13
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 14
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 15
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 16
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 17
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 18
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 19
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 20
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 21
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 22
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 23
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 24
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 25
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 26
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 27
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 28
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 29
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 30
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 31
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 32
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 33
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 34
02-11 21:47:46.461 685-685/kim.albert.marveleventtracker I/tag﹕ 35
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 36
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 37
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 38
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 39
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 40
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 41
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 42
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 43
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 44
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 45
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 46
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 47
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 48
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 49
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 50
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 51
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 52
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 53
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 54
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 55
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 56
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 57
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 58
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 59
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 60
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 61
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 62
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 63
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 64
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 65
02-11 21:47:46.471 685-685/kim.albert.marveleventtracker I/tag﹕ 66
在向阵列添加数据之前,您正在打印阵列。
您的JSON请求代码不会等待请求完成。 它说:“嘿,现在就开始这个请求,当它结束时将结果返回给我(当结果返回给你时,你调用parseJSONResponse
将它们添加到列表中)”。
同时,当该请求发送到服务器时(网络速度很慢),您可以打印列表的内容。
当响应返回时,您将元素添加到列表中。
下面的代码不会等待响应,而是会直接执行,我的意思是它将只向服务器执行请求,这意味着您的时间到了,它将开始执行以下代码。
for (int i = 0; i < eventArray.size(); i++) {
mTV.append("Id: " + String.valueOf(eventArray.get(i).id) + '\n' +
"Title: " + eventArray.get(i).title + '\n' +
"Description: " + eventArray.get(i).description + '\n');
}
display();
所以想法一下,应该有一个条件来检查是否已成功收到响应!
要么
最好的方法是在onResponse()
方法中创建一个方法并调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.