Как я могу дождаться метода, содержащего запрос залпа на финиш sh в ADS? - PullRequest
0 голосов
/ 10 июля 2020

В моем коде я вызываю метод получения для извлечения информации из базы данных. В методе есть запрос залпа, при каждом извлечении набора данных из базы данных создается объект, который добавляется в глобальный список массивов. Затем 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);
}

}

...