My ListView is not showing anything.
I'm downloading the top stories API from Hacker-News and putting them in my app. I want to put the titles of those stories in my list view (they are over 100).
I download them and store them in a database for permanent storage and then add them to my list view, but NOTHING is showing up in my app. Can anyone explain to me why?
UPDATE: I get a CursorIndexOutOfBoundException problem. ( index 350 out of 350)
public class MainActivity extends AppCompatActivity {
    ListView listView;
    private SQLiteDatabase myDatabase;
    private Cursor cursor;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.listView);
        DownloadIDs ids = new DownloadIDs();
        String URL = "https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty";
        ids.execute(URL);
        try {
            ArrayList<String> titles = new ArrayList<String>();
            ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, titles);
            listView.setAdapter(arrayAdapter);
            myDatabase = this.openOrCreateDatabase("HackerNews", MODE_PRIVATE, null);
            Cursor cursor1 = myDatabase.rawQuery("SELECT * FROM ids", null);
            int index = cursor1.getColumnIndex("urlID");
            cursor1.moveToFirst();
            while (cursor1 != null) {
                String newUrl = "https://hacker-news.firebaseio.com/v0/item/" + cursor1.getString(index) + ".json?print=pretty";
                new DownloadContent().execute(newUrl);
                cursor1.moveToNext();
            }
            Cursor cursor2 = myDatabase.rawQuery("SELECT * FROM content", null);
            int titleIndex = cursor2.getColumnIndex("title");
            cursor2.moveToFirst();
            titles.add("Hello");
            while(cursor2 != null){
                titles.add(cursor2.getString(titleIndex));
                arrayAdapter.notifyDataSetChanged();
                cursor2.moveToNext();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    public class DownloadIDs extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... params) {
            String result = "";
            URL url;
            HttpURLConnection urlConnection = null;
            try {
                url = new URL(params[0]);
                urlConnection = (HttpURLConnection) url.openConnection();
                InputStream inputStream = urlConnection.getInputStream();
                InputStreamReader reader = new InputStreamReader(inputStream);
                int data = reader.read();
                while (data >= 0) {
                    char current = (char) data;
                    result += current;
                    data = reader.read();
                }
                return result;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            try {
                myDatabase.execSQL("CREATE TABLE IF NOT EXISTS ids (id INTEGER PRIMARY KEY, urlID VARCHAR)");
                cursor = myDatabase.rawQuery("SELECT COUNT(*) FROM ids", null);
                cursor.moveToFirst();
                int count = cursor.getInt(0);
                if (!(count > 0)) {
                    JSONArray ids = new JSONArray(s);
                    for (int i = 0; i < ids.length(); i++) {
                        myDatabase.execSQL("INSERT INTO ids (urlID) VALUES ('" + ids.getString(i) + "')");
                    }
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    public class DownloadContent extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... params) {
            String result = "";
            URL url;
            HttpURLConnection urlConnection = null;
            try {
                url = new URL(params[0]);
                urlConnection = (HttpURLConnection) url.openConnection();
                InputStream inputStream = urlConnection.getInputStream();
                InputStreamReader reader = new InputStreamReader(inputStream);
                int data = reader.read();
                while (data >= 0) {
                    char current = (char) data;
                    result += current;
                    data = reader.read();
                }
                return result;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            try {
                myDatabase.execSQL("CREATE TABLE IF NOT EXISTS content(id INTEGER PRIMARY KEY, title VARCHAR, url VARCHAR)");
                cursor = myDatabase.rawQuery("SELECT COUNT(*) FROM content", null);
                cursor.moveToFirst();
                int count = cursor.getInt(0);
                if (!(count > 0)) {
                    JSONObject jsonObject = new JSONObject(s);
                    String title = jsonObject.getString("title");
                    Log.i("title", title);
                    String url = jsonObject.getString("url");
                    Log.i("url", url);
                    myDatabase.execSQL("INSERT INTO content (title, url) VALUES('" + title + "','" + url + "')");
                }
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }
}