Тебе все правильно написали.
Мой тебе совет лезть в гитхаб, качать оттуда проекты и смотреть их механику.
Прежде чем лабать код смотрим на исходные данные.
У тебя это json, открываем и смотрим.
Мы видим массив одинаковых объектов. Для нашего удобства
сообразим класс под json'овские данные
class Product {
int id;
String name;
String picture;
String description;
}
Теперь нам нужно в активити их распарсить в список.
У тебя есть объект с методом
new JSONReadFromAsset().readJsonFromAsset(getApplicationContext());
который возвращает json массив, а если заказчик завтра даст два таких файла !?
мы же не хотим копипастить, а сделаем универсально и метод парсера будет возвращать сразу массив объектов, а не json данные и тогда мы выкинем лишние сущности
ArrayList<String> nameList = new ArrayList<String>();
ArrayList<Integer> idList = new ArrayList<Integer>();
а вставим только один список
List<Product> mDataList
и тогда мы будем получать данные
mDataList = JSONReadFromAsset.readJsonFromAsset(getApplicationContext(),"questions.json");
Сделаем readJsonFromAsset статиком, так как JSONReadFromAsset ничего в себе не несет.
в readJsonFromAsset должно быть что-то, вроде, такого
readJsonFromAsset() {
List<Product> dataList = new LinkedList();
for () {
Product product = new Product();
obj = jsonArray.getJSONObject(position);
product.id = obj.getInt("id");
product.name = obj.getString("name");
product.description = obj.getString("description");
product.picture = obj.getString("picture");
dataList.add(product);
}
return dataList;
}
вместо методов getString, getInt я предпочитаю использовать optString, optInt
Вариантов парсинга данных много, можно изворачиваться по разному.
А что бы показать что ты крут, можно сделать класс Product Parcelable
и не передавать пачку строк через бандл в интенте, а передать сразу Product объект.
bundle.putParcelable(SomeActivity.PRODUCT, mDataList.get(position));
В другом активити принять и с ним работать.
Можно вот так сделать
public static final String LINK = "
ironwaterstudio.com";
и поместить в легко доступное место или завести отдельный класс
class Static {
public static final String LINK = "http://ironwaterstudio.com";
}
AlertDialog - насколько тебе необходимо обрабатывать setNegativeButton, попробуй не передавать обработчик кнопки, а сунуть null