показать последние данные, когда устройство в автономном режиме (Android Studio) - PullRequest
0 голосов
/ 06 сентября 2018

Здравствуйте, я очень новичок в JSON. У меня есть некоторые задачи для получения данных с сервера http://jsonplaceholder.typicode.com/posts, который содержит данные JSON. Я закончил, чтобы получить данные и показать, что все данные в listView. и я хочу, чтобы мое приложение могло обрабатывать случай, если нет подключения к Интернету, приложение может показать последние данные. Я пытался с кешем, но он все еще не может работать. Кеш не сохранил мои данные из списка, поэтому ничего не показывает. Это мой код:

private void getData() {
    if (InternetConnection.getInstance().isOnline(MainActivity.this)) {
        final ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("Loading...");
        progressDialog.show();

        JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {

                for (int i = 0; i < response.length(); i++) {
                    try {
                        JSONObject jsonObject = response.getJSONObject(i);

                        PostModel postModel = new PostModel();
                        postModel.setTitle(jsonObject.getString("title"));
                        postModel.setId(jsonObject.getInt("id"));
                        postModel.setBody(jsonObject.getString("body"));
                        postList.add(postModel);

                        try {
                            cacheThis.writeObject(MainActivity.this, "savePost", postList);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }



                    } catch (JSONException e) {
                        e.printStackTrace();
                        progressDialog.dismiss();
                    }
                }
                adapter.notifyDataSetChanged();
                progressDialog.dismiss();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("Volley", error.toString());
                progressDialog.dismiss();
            }
        });
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(jsonArrayRequest);
    } else {
        try {
            postList.addAll((List<PostModel>) cacheThis.readObject(MainActivity.this, "savePost"));
            if (postList.size()<0) {
                postList.addAll((List<PostModel>) cacheThis.readObject(MainActivity.this, "savePost"));
                adapter.notifyDataSetChanged();
            } else {
                Toast.makeText(getApplicationContext(), "PULL TO REFRESH", Toast.LENGTH_LONG).show();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        Toast.makeText(getApplicationContext(), "No Internet Connection", Toast.LENGTH_LONG).show();
    }

}

и это класс кэша:

package com.example.meita.fetchjson;

import android.content.Context;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

final class cacheThis {

private cacheThis() {
}

public static void writeObject(Context context, String fileName, Object object) throws IOException {
    FileOutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE);
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(object);
    oos.flush();
    oos.close();

    fos.close();
}

public static Object readObject(Context context, String fileName) throws IOException,
        ClassNotFoundException {
    FileInputStream fis = context.openFileInput(fileName);
    ObjectInputStream ois = new ObjectInputStream(fis);
    Object object = ois.readObject();
    fis.close();
    return object;
}
}

Почему мой код не работает? Что мне делать с моим кодом? Пожалуйста, помогите мне. Большое спасибо ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...