在Android应用中显示大量数据(主要是文本)

时间:2018-07-14 10:33:01

标签: android data-storage

我正在创建一个android应用程序,并且我想在我的应用程序中显示相对大量的数据(主要是文本形式以及作为键->字符串对)。 问题是我不想在我的应用程序代码中输入数据,这意味着手动感觉每个TextView及其相关数据。我不认为这是正确的! 我希望我的应用程序从文件(可能是JSON?)中读取此数据,然后将每个key->字符串对与相关的TexView关联。 更清楚地说,我需要阅读准备好的文本文件并在我的应用程序中使用该文本,而且我想离线进行此操作,我不想使用任何网络服务 我应该如何做到这一点?我应该使用数据库还是房间?那么我应该如何在不使用应用程序内部插入代码的情况下手动感受数据库?

2 个答案:

答案 0 :(得分:2)

使用Volley进行JSON解析

private static final String url ="your url";

创建方法

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);

 }

答案 1 :(得分:1)

您可以简单地使用JSON文件。现在,问题是:如何将JSON文件与您的应用一起发送,以便它在运行时可用?您可以使用以下任何一种方法:

  • 将其放在目录res/raw/中,并使用Resources类(具有openRawResource()方法)对其进行读取

  • 将其放在assets/目录中,并使用AssetManager类读取它(它具有返回输入流的open()方法)

希望这对您有帮助...编码愉快!