title: How to Cache Json data to be available offline?
body: <p>I have parsed the JSON Data in a <code>listview</code> and now I want to make it available offline. 
  Is there a way to save the JSON data at the phone so that you can see the data if your phone is offline? </p>
  
  <p>Does someone knows an example?</p>
  
  <p>EDIT works now:</p>
  
  <pre><code> public class MainActivity extends ListActivity {
  
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          new TheTask().execute();
      }
  
      class TheTask extends AsyncTask&lt;Void, Void, JSONArray&gt; {
          InputStream is = null;
          String result = "";
          JSONArray jArray = null;
  
          ProgressDialog pd;
  
          @Override
          protected void onPostExecute(JSONArray result) {
              super.onPostExecute(result);
              pd.dismiss();
              ArrayList&lt;String&gt; list= new ArrayList&lt;String&gt;();
              try {
                  for(int i=0;i&lt;result.length();i++) {
  
                      JSONObject jb = result.getJSONObject(i) ;
                      String name = jb.getString("name")+" "+jb.getString("Art");
                      list.add(name);
                  }
              } catch(Exception e) {
                  e.printStackTrace();
              }
              setListAdapter(new ArrayAdapter&lt;String&gt;(MainActivity.this, android.R.layout.simple_list_item_1, list));
          }
  
          @Override
          protected void onPreExecute() {
              super.onPreExecute();
              pd = ProgressDialog.show(MainActivity.this, "State",
                      "Loading...", true);
          }
  
          @Override
          protected JSONArray doInBackground(Void... arg0) {
              ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
  
                  try {
                      HttpClient httpclient = new DefaultHttpClient();
                      HttpPost httppost = new HttpPost("***");
                      HttpResponse response = httpclient.execute(httppost);
                      HttpEntity entity = response.getEntity();
                      is = entity.getContent();
                  } catch (Exception e) {
                      Log.e("log_tag", "Error in http connection " + e.toString());
                  }
  
                  // Convert response to string
                  try {
                      BufferedReader reader = new BufferedReader(new InputStreamReader(
                              is, "iso-8859-1"), 8);
                      StringBuilder sb = new StringBuilder();
                      String line = null;
                      while ((line = reader.readLine()) != null) {
                          sb.append(line + "\n");
                      }
                      is.close();
                      result = sb.toString();
                      writeToFile(result);
                  } catch (Exception e) {
                      Log.e("log_tag", "Error converting result " + e.toString());
                  }
  
                  try {
                      jArray = new JSONArray(result);
                  } catch (JSONException e) {
                      Log.e("log_tag", "Error parsing data " + e.toString());
                  }
  
                  try {
                      jArray = new JSONArray(readFromFile());
                  } catch (JSONException e) {
                      Log.e("log_tag", "Error parsing data " + e.toString());
                  }
  
              return jArray;
          }
      }
  
      private void writeToFile(String data) {
          try {
              OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("config.txt", Context.MODE_PRIVATE));
              outputStreamWriter.write(data);
              outputStreamWriter.close();
          }
          catch (IOException e) {
              Log.e("Exception", "File write failed: " + e.toString());
          }
      }
  
      private String readFromFile() {
  
          String ret = "";
  
          try {
              InputStream inputStream = openFileInput("config.txt");
  
              if ( inputStream != null ) {
                  InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                  BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                  String receiveString = "";
                  StringBuilder stringBuilder = new StringBuilder();
  
                  while ( (receiveString = bufferedReader.readLine()) != null ) {
                      stringBuilder.append(receiveString);
                  }
  
                  inputStream.close();
                  ret = stringBuilder.toString();
              }
          } catch (FileNotFoundException e) {
              Log.e("login activity", "File not found: " + e.toString());
          } catch (IOException e) {
              Log.e("login activity", "Can not read file: " + e.toString());
          }
  
          return ret;
      }
  }
  </code></pre>