public ArrayList<ArrayList<Feed>> getCategoriesForNewsPapers(ArrayList<String> newsPaperNames) { Cursor result = null; ArrayList<ArrayList<Feed>> categories = new ArrayList<ArrayList<Feed>>(); ArrayList<Feed> category = new ArrayList<Feed>(); try { db = appCtx.openOrCreateDatabase(databaseName, Context.MODE_PRIVATE, null); for (String newsPaper : newsPaperNames) { result = db.query( tableName, new String[] {"Category", "FeedURL", "Subscribed"}, "NewsPaperName=?", new String[] {newsPaper}, null, null, null); result.moveToFirst(); Feed feed = new Feed(); int categoryIndex = result.getColumnIndex("Category"); int subscribedIndex = result.getColumnIndex("Subscribed"); int feedUrlIndex = result.getColumnIndex("FeedURL"); // Add to corresponding array list while (!result.isAfterLast()) { feed.setNewsPaper(newsPaper); feed.setCategory(result.getString(categoryIndex)); feed.setFeedURL(result.getString(feedUrlIndex)); feed.setSubscribed(result.getInt(subscribedIndex)); category.add(feed); result.moveToNext(); } categories.add(category); category = new ArrayList<Feed>(); } result.close(); db.close(); } catch (SQLiteException exception) { Log.e( "NewsPaperTableHandler::getCategoriesForNewsPapers", "Categories could not be got " + exception.getMessage()); } catch (Exception exception) { Log.e("NewsPaperTableHandler::getCategoriesForNewsPapers", exception.getMessage()); } return categories; }