title: How can I parse a local JSON file from assets folder into a ListView?
body: <p>I'm currently developing a physics app that is supposed to show a list of formulas and even solve some of them (the only problem is the <code>ListView</code>)</p>
  
  <p><strong>This is my main layout</strong></p>
  
  <pre><code>    &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:measureWithLargestChild="false"
      android:orientation="vertical"
      tools:context=".CatList" &gt;
  
  
      &lt;RelativeLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:background="@drawable/titlebar" &gt;
  
          &lt;TextView
              android:id="@+id/Title1"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_centerHorizontal="true"
              android:layout_centerVertical="true"
              android:text="@string/app_name"
              android:textAppearance="?android:attr/textAppearanceLarge"
              android:textColor="#ff1c00"
              android:textIsSelectable="false" /&gt;
  
      &lt;/RelativeLayout&gt;
  
      &lt;ListView
          android:id="@+id/listFormulas"
          android:layout_width="match_parent"
          android:layout_height="wrap_content" &gt;
  
      &lt;/ListView&gt;
  
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p><strong>And this is my main activity</strong></p>
  
  <pre><code>package com.wildsushii.quickphysics;
  
  import java.io.IOException;
  import java.io.InputStream;
  import java.util.ArrayList;
  import java.util.HashMap;
  
  import org.json.JSONException;
  import org.json.JSONObject;
  
  import android.os.Bundle;
  import android.app.Activity;
  import android.content.Context;
  import android.content.res.AssetManager;
  import android.view.Menu;
  import android.widget.ListView;
  
  public class CatList extends Activity {
  
  
  
      public static String AssetJSONFile (String filename, Context context) throws IOException {
          AssetManager manager = context.getAssets();
          InputStream file = manager.open(filename);
          byte[] formArray = new byte[file.available()];
          file.read(formArray);
          file.close();
  
          return new String(formArray);
      }
  
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_cat_list);
          ListView categoriesL = (ListView)findViewById(R.id.listFormulas);
  
          ArrayList&lt;HashMap&lt;String, String&gt;&gt; formList = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;();
          Context context = null;
          try {
              String jsonLocation = AssetJSONFile("formules.json", context);
              JSONObject formArray = (new JSONObject()).getJSONObject("formules");
              String formule = formArray.getString("formule");
              String url = formArray.getString("url");
          } catch (IOException e) {
              e.printStackTrace();
          } catch (JSONException e) {
              e.printStackTrace();
          }
  
          //My problem is here!!
      }
  
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.cat_list, menu);
          return true;
      }
  }
  </code></pre>
  
  <p>I actually know I can make this without using JSON but I need more practice parsing JSON. By the way, this is the JSON</p>
  
  <pre><code>    {
      "formules": [
      {
        "formule": "Linear Motion",
        "url": "qp1"
      },
      {
        "formule": "Constant Acceleration Motion",
        "url": "qp2"
      },
      {
        "formule": "Projectile Motion",
        "url": "qp3"
      },
      {
        "formule": "Force",
        "url": "qp4"
      },
      {
        "formule": "Work, Power, Energy",
        "url": "qp5"
      },
      {
        "formule": "Rotary Motion",
        "url": "qp6"
      },
      {
        "formule": "Harmonic Motion",
        "url": "qp7"
      },
      {
        "formule": "Gravity",
        "url": "qp8"
      },
      {
        "formule": "Lateral and Longitudinal Waves",
        "url": "qp9"
      },
      {
        "formule": "Sound Waves",
        "url": "qp10"
      },
      {
        "formule": "Electrostatics",
        "url": "qp11"
      },
      {
        "formule": "Direct Current",
        "url": "qp12"
      },
      {
        "formule": "Magnetic Field",
        "url": "qp13"
      },
      {
        "formule": "Alternating Current",
        "url": "qp14"
      },
      {
        "formule": "Thermodynamics",
        "url": "qp15"
      },
      {
        "formule": "Hydrogen Atom",
        "url": "qp16"
      },
      {
        "formule": "Optics",
        "url": "qp17"
      },
      {
        "formule": "Modern Physics",
        "url": "qp18"
      },
      {
        "formule": "Hydrostatics",
        "url": "qp19"
      },
      {
        "formule": "Astronomy",
        "url": "qp20"
      }
    ]
  }
  </code></pre>
  
  <p>I have tried a lot of things and even delete the entire project to make a new one :(</p>