Как получить массив через JSON и вывести в TextView?

Пишу приложение на android и появилась необходимость получить массив срок JSON запросом с сервера и вывести его в TextView. Как это правильнее сделать? Вот как я пытался сделать:

public class MainActivity extends AppCompatActivity {

    private static final String JSON_URL = "http://***.php";
    ListView listView;
    ArrayList<JSONObject> infoList;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView = (ListView) findViewById(R.id.listView);
        loadJSONFromURL(JSON_URL);
    }

    private void loadJSONFromURL(String url) {
        final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar);
        progressBar.setVisibility(ListView.VISIBLE);
        StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
                new Response.Listener<String>(){
                    @Override
                    public void onResponse(String response) {
                        progressBar.setVisibility(ListView.VISIBLE);
                        try {
                            JSONObject Object = new JSONObject(response);
                            JSONArray jsonArray = Object.getJSONArray("M1");
                            ArrayList<JSONObject> listItem = getArrayListFromJSONArray(jsonArray);
                            ListAdapter adapter = new ListViewAdapter(getApplicationContext(), R.layout.row, R.id.textViewModel, listItem);
                            listView.setAdapter(adapter);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                });
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
    }
    private ArrayList<JSONObject> getArrayListFromJSONArray(JSONArray jsonArray)
    {
        ArrayList<JSONObject> aList = new ArrayList<JSONObject>();
        try
        {
            if (jsonArray != null)
            {
                for (int i = 0; i < jsonArray.length(); i++)
                {
                    aList.add(jsonArray.getJSONObject(i));
                }
            }
        }
        catch (JSONException js)
        {
            js.printStackTrace();
        }
        return aList;
    }

}

Получаю следующую ошибку в логах

2022-06-23 12:49:49.271 9036-9253/com.example.myapplication E/Volley: [327094] NetworkUtility.shouldRetryException: Unexpected response code 500 for http://***.php

и

2022-06-23 12:49:49.506 9036-9036/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.myapplication, PID: 9036
    java.lang.IllegalStateException: You must either set a text or a view
        at com.android.internal.util.Preconditions.checkState(Preconditions.java:173)
        at android.widget.Toast.show(Toast.java:188)
        at com.example.myapplication.MainActivity$2.onErrorResponse(MainActivity.java:90)
        at com.android.volley.Request.deliverError(Request.java:652)
        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:104)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:236)
        at android.app.ActivityThread.main(ActivityThread.java:8037)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)
2022-06-23 12:49:49.577 9036-9036/com.example.myapplication I/Process: Sending signal. PID: 9036 SIG: 9


Ответы (1 шт):

Автор решения: World

Вам нужно создать модель класа это модель объекта которого вы получаете в запросе к вашему api, потом адаптер, потом в активити наследование от recyclerview и адаптера. Вообщем писать долго помотрите видео https://youtu.be/3uAqwnxZMwI

→ Ссылка