Автоматическая загрузка данных из базы данных и отображение в виде списка - PullRequest
0 голосов
/ 04 ноября 2019

В настоящее время я хочу создать представление списка путем загрузки данных из базы данных. Я использовал исходный код из интернета. Я получаю данные из базы данных MySQL. загрузка данных и отображение в виде списка прошло успешно. Но проблема в том, что все данные будут отображаться в виде списка, только если я нажму кнопку с именем «Загрузить JSON с сервера». Теперь я хочу, чтобы данные в списке отображались без нажатия кнопки «Загрузить JSON с сервера»

Ниже приведен код:

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

    // Assign ID's to ListView.
    listView = (ListView) findViewById(R.id.listView1);

    button = (Button)findViewById(R.id.button);

    progressBar = (ProgressBar)findViewById(R.id.ProgressBar1);

    // Adding click listener to button.
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            //Showing progress bar just after button click.
            progressBar.setVisibility(View.VISIBLE);

            // Creating StringRequest and set the JSON server URL in here.
            StringRequest stringRequest = new StringRequest(HTTP_URL,
                    new Response.Listener<String>() {
                        @Override
                        public void onResponse(String response) {

                            // After done Loading store JSON response in FinalJSonObject string variable.
                            FinalJSonObject = response ;

                            // Calling method to parse JSON object.
                            new ParseJSonDataClass(MainActivity.this).execute();

                        }
                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {

                            // Showing error message if something goes wrong.
                            Toast.makeText(MainActivity.this,error.getMessage(),Toast.LENGTH_LONG).show();

                        }
                    });

            // Creating String Request Object.
            RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);

            // Passing String request into RequestQueue.
            requestQueue.add(stringRequest);

        }
    });
}

// Creating method to parse JSON object.
private class ParseJSonDataClass extends AsyncTask<Void, Void, Void> {

    public Context context;

    // Creating List of Subject class.
    List<Subject> CustomSubjectNamesList;

    public ParseJSonDataClass(Context context) {

        this.context = context;
    }

    @Override
    protected void onPreExecute() {

        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(Void... arg0) {

        try {

            // Checking whether FinalJSonObject is not equals to null.
                if (FinalJSonObject != null) {

                    // Creating and setting up JSON array as null.
                    JSONArray jsonArray = null;
                    try {

                        // Adding JSON response object into JSON array.
                        jsonArray = new JSONArray(FinalJSonObject);

                        // Creating JSON Object.
                        JSONObject jsonObject;

                        // Creating Subject class object.
                        Subject subject;

                        // Defining CustomSubjectNamesList AS Array List.
                        CustomSubjectNamesList = new ArrayList<Subject>();

                        for (int i = 0; i < jsonArray.length(); i++) {

                            subject = new Subject();

                            jsonObject = jsonArray.getJSONObject(i);

                            //Storing ID into subject list.
                            subject.Subject_ID = jsonObject.getString("id");

                            //Storing Subject name in subject list.
                            subject.Subject_Name = jsonObject.getString("subject_Name");

                            // Adding subject list object into CustomSubjectNamesList.
                            CustomSubjectNamesList.add(subject);
                        }
                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result)

    {
        // After all done loading set complete CustomSubjectNamesList with application context to ListView adapter.
            ListViewAdapter adapter = new ListViewAdapter(CustomSubjectNamesList, context);

        // Setting up all data into ListView.
            listView.setAdapter(adapter);

        // Hiding progress bar after all JSON loading done.
        progressBar.setVisibility(View.GONE);

    }
}

1 Ответ

1 голос
/ 04 ноября 2019

Изменить функцию onCreate на:

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

// Assign ID's to ListView.
listView = (ListView) findViewById(R.id.listView1);

button = (Button)findViewById(R.id.button);

progressBar = (ProgressBar)findViewById(R.id.ProgressBar1);


        //Showing progress bar just after button click.
        progressBar.setVisibility(View.VISIBLE);

        // Creating StringRequest and set the JSON server URL in here.
        StringRequest stringRequest = new StringRequest(HTTP_URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {

                        // After done Loading store JSON response in FinalJSonObject string variable.
                        FinalJSonObject = response ;

                        // Calling method to parse JSON object.
                        new ParseJSonDataClass(MainActivity.this).execute();

                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                        // Showing error message if something goes wrong.
                        Toast.makeText(MainActivity.this,error.getMessage(),Toast.LENGTH_LONG).show();

                    }
                });

        // Creating String Request Object.
        RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);

        // Passing String request into RequestQueue.
        requestQueue.add(stringRequest);

}
...