简体   繁体   中英

Display large amount of data(mostly text) in android app

I'm creating an android app and i have a relatively large amount of data (mostly in text form and as key->string pairs) that i want to display in my app. The problem is i don't want to enter the data in my app's code,meaning feel each TextView manually with the associated data.i don't feel that to be right! I want my app to read this data from a file(maybe a JSON?) and then associate each key-> string pair with the related TexView. To be more clear, i need to read from a prepared text file and use that text inside my app, AND i want to do this offline,i dont want to use any webservic How should i accomplish this? should i use a database or room?Then how should i feel the database manually without using insert codes inside the app?

Use Volley for JSON Parsing

private static final String url ="your url";

Create a method

final ProgressDialog progressDialog = new ProgressDialog(this);
     progressDialog.setMessage("Please wait, while we load the data");
     progressDialog.show();

*make a String or JSON request*

 JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
         newurl, null, new Response.Listener<JSONObject>() {
         @Override
         public void onResponse(JSONObject response) {
             Log.d("response", response.toString());

             Log.i("updated Url",newurl);

             progressDialog.dismiss();

*then move into the json and create JSON object or JSON Array to get their String values*

             try {
                 JSONObject data = response.getJSONObject("data");
                 JSONArray  onwardflights = data.getJSONArray("data_key");

                 for (int i = 0; i < onwardflights.length(); i++) {
                     JSONObject onwardFlightsChild = onwardflights.getJSONObject(i);


                     String arrival,deparutre,duration,flightno,grossamount,image,direct;
                     JSONObject object = onwardFlightsChild.getJSONObject("data_key");
                     Onwardflights onwardflights1 = new Onwardflights(

                             arrival = onwardFlightsChild.getString("data_key"),
                             deparutre = onwardFlightsChild.getString("data_key"),
                             duration = onwardFlightsChild.getString("data_key"),
                             flightno = onwardFlightsChild.getString("data_key"),
                             direct = onwardFlightsChild.getString("data_key"),
                             origin = onwardFlightsChild.getString("data_key"));

                     Log.i("Origin",origin);

                     Fare fare = new Fare(
                             grossamount = object.getString("data_key")
                     );


                     onwardflights1.setFare(fare);
                     suggestionmodel.add(onwardflights1);
                 }

*Create an instance of adapter and pass the parameters*



                 RecyclerAdapter recyclerAdapter = new RecyclerAdapter(suggestionmodel,getApplicationContext());
                 recyclerView.setAdapter(recyclerAdapter);
             } catch (JSONException e) {
                 e.printStackTrace();

             }
         }
     }, new Response.ErrorListener() {

         @Override
         public void onErrorResponse(VolleyError error) {
             VolleyLog.d("THIS", "Error: " + error.getMessage());
             Toast.makeText(getApplicationContext(),
                     error.getMessage(), Toast.LENGTH_SHORT).show();

         }
     });

     RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());

     requestQueue.add(jsonObjReq);

 }

You could simply use a JSON file. Now, the question is: How do you ship a JSON file with your app so that it's available at Runtime? You can use any of these methods:

  • Put it in the directory res/raw/ and read it using the Resources class (it has a openRawResource() method)

  • Put it in the assets/ directory and read it in using the AssetManager class (it has a open() method that returns an InputStream)

I hope this helps... Merry coding!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM