В моем коде я вызываю метод получения для извлечения информации из базы данных. В методе есть запрос залпа, при каждом извлечении набора данных из базы данных создается объект, который добавляется в глобальный список массивов. Затем arrayList используется для заполнения представления списка. Но когда я его запускаю, arrayList пуст. Могу ли я дождаться выполнения метода до создания представления списка. В данный момент экран становится пустым, но работает, когда добавляются фиктивные данные.
package com.example.trainingtracker;
publi c class ActivityListFragment extends Fragment {
String email;
private ArrayList<ActivityType> activityTypeArrayList;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
email = AccountInfo.accountEmail;
activityTypeArrayList = new ArrayList<>();
retrieveListOfActivities();
View rootView = inflater.inflate(R.layout.word_list, container, false);
// Create an {@link WordAdapter}, whose data source is a list of {@link Word}s. The
// adapter knows how to create list items for each item in the list.
ActivityAdaptor adapter = new ActivityAdaptor(getActivity(), activityTypeArrayList, R.color.colorPrimary);
ListView listView = (ListView) rootView.findViewById(R.id.list);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
// Get the {@link Word} object at the given position the user clicked on
ActivityType activityType = activityTypeArrayList.get(position);
}
});
return rootView;
}
private synchronized void retrieveListOfActivities(){
StringRequest stringRequest = new StringRequest(Request.Method.GET,"http://rrush01.lampt.eeecs.qub.ac.uk/retrieveActivityIds.php",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray activityListFromDB = new JSONArray(response);
for (int i = 0; i < activityListFromDB.length(); i++) {
JSONObject activityListJsonObject = activityListFromDB.getJSONObject(i);
String date = activityListJsonObject.getString("Date");
String user = activityListJsonObject.getString("User");
String description = activityListJsonObject.getString("Description");
String activityType = activityListJsonObject.getString("ActivityType");
int imageID = R.drawable.finishflag;
if(user.equals(email)) {
ActivityType eachActivity = new ActivityType(activityType,description,imageID,date);
activityTypeArrayList.add(eachActivity);
}
}
System.out.println(activityTypeArrayList.size());
} catch (JSONException e) {
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getContext(), "Error: " + error.getMessage(), Toast.LENGTH_LONG).show();
}
});
Volley.newRequestQueue(this.getActivity()).add(stringRequest);
}
}