Как разобрать Json из локального файла? - PullRequest
0 голосов
/ 30 мая 2018

Я хочу проанализировать JSON из локального файла, хранящегося в папке ресурсов, и установить его в утилита просмотра в Android.Но просмотрщик не заполняется.

Может кто-нибудь сказать, что с этим не так?Я пробовал много ответов отсюда, но это не работает.

JSON

{
    "box": [
        {
            "text" : "text1 "
        },
        {
            "text" : "text2"
        },
        {
        "text" : "text3"
        },
        ...............
    ]
}

CODE

private String loadJSONFromAsset() {
    String json = null;
    try {
        InputStream is = getAssets().open("file.json");
        int size = is.available();
        byte[] buffer = new byte[size];
        is.read(buffer);
        is.close();
        json = new String(buffer, "UTF-8");
    } catch (IOException ex) {
        ex.printStackTrace();
        return null;
    }
    return json;
}
private void RequestJson() {
    recyclerView = findViewById(R.id.mRecycler);
    List<Box> data=new ArrayList<>();
    try {
        JSONObject json = new JSONObject(loadJSONFromAsset());
        JSONArray tablelist = json.getJSONArray("box");

        for (int i = 0; i < tablelist.length(); i++) {
            JSONObject AllTable = tablelist.getJSONObject(i);
            Box items2 = new Box();

            items2.setText(AllTable.getString("text"));
            data.add(items2);
        }
        mAdapter = new BoxAdapter(MainActivity.this, data);
        recyclerView.setAdapter(mAdapter);
        recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));

    } catch (JSONException e) {
        e.printStackTrace();
        Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
    }
}

1 Ответ

0 голосов
/ 30 мая 2018

изменить это.и убедитесь, что данные не пусты.

mAdapter = new BoxAdapter(MainActivity.this, data);
        recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
        recyclerView.setAdapter(mAdapter);
      mAdapter.notifyDataSetChanged();
...