У меня есть этот JSon данныеAndroid Pass JSON данные другой деятельности
{
"Categories": [
{
"description": "",
"id": 33,
"name": "News",
"parent_id": 0,
"position": 3,
"published_videos": 953,
"tag": "news",
"total_videos": 953
},
{
"description": "",
"id": 34,
"name": "Health",
"parent_id": 0,
"position": 22,
"published_videos": 17,
"tag": "tena",
"total_videos": 17
},
{
"description": "",
"id": 35,
"name": "Interview",
"parent_id": 0,
"position": 23,
"published_videos": 271,
"tag": "qalemeteyeq",
"total_videos": 271
},
{
"description": "",
"id": 36,
"name": "Trailers",
"parent_id": 0,
"position": 21,
"published_videos": 72,
"tag": "movie",
"total_videos": 72
},
{
"description": "",
"id": 37,
"name": "Technology",
"parent_id": 0,
"position": 24,
"published_videos": 17,
"tag": "technology",
"total_videos": 17
},
"description": "",
"id": 39,
"name": "International News",
"parent_id": 33,
"position": 1,
"published_videos": 319,
"tag": "international_news",
"total_videos": 319
},
]
}
И я разобран этот JSon файл и добавить его в панель навигации. В ящике навигации все, что у меня есть, - это имя каждой категории. Когда пользователь нажал на категории, есть еще один json, который я хотел разобрать, который перечисляет элементы в представлении recycler. Например, я использую вот так: http://mydomain/category/id/videos Я хочу заменить идентификатор на тот, который нажал (из json), и получить список предметов из Интернета. Но я не знаю, как получить идентификатор и передать его с намерением. Есть ли какая-то директива по дизайну, которую я должен использовать для решения таких проблем?
private String[] getCategoriesJson(String categoriesJsonStr)
throws JSONException {
JSONObject categoriesJSON = new JSONObject(categoriesJsonStr);
JSONArray categoriesArray = categoriesJSON.getJSONArray("Categories");
String[] resultStrs = new String[categoriesArray.length()+1];
resultStrs[0] = "Home";
for (int i=0; i< categoriesArray.length(); i++){
JSONObject category = categoriesArray.getJSONObject(i);
String name = category.getString("name");
Integer categoryId = category.getInt("id");
//Integer parentId = category.getInt("parent_id");
resultStrs[i+1] = name;
}
for (String s: resultStrs){
Log.v(LOG_TAG, "Category entry: " + s);
}
return resultStrs;
}
@Override
protected String[] doInBackground(String... params) {
HttpURLConnection urlConnection = null;
BufferedReader reader = null;
String categoriesJsonstr = null;
try {
URL url = new URL("http://mydomain/categories/");
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();
InputStream inputStream = urlConnection.getInputStream();
StringBuffer buffer = new StringBuffer();
if (inputStream == null) {
return null;
}
reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while((line = reader.readLine()) != null){
buffer.append(line + "\n");
}
if (buffer.length() == 0) {
return null;
}
categoriesJsonstr = buffer.toString();
//Log.v(LOG_TAG, "Categories JSON String: " + categoriesJsonstr);
}catch (IOException e) {
Log.e(LOG_TAG, "Error", e);
return null;
}finally {
if (urlConnection != null){
urlConnection.disconnect();
}
if (reader != null) {
try {
reader.close();
}catch (final IOException e){
Log.e(LOG_TAG, "Error closing stream", e);
}
}
}
try {
return getCategoriesJson(categoriesJsonstr);
}catch (JSONException e){
Log.e(LOG_TAG, e.getMessage(), e);
e.printStackTrace();
}
return null;
}
Проблема в том, что я могу получить имя категории, используя findViewById. Но где я должен хранить идентификатор каждой категории?
добавьте ИНТ экстренно ваше намерение с идентификатором в нем: http://developer.android.com/reference/android/content/Intent.html – Onheiron
да, но я новичок, и я хотел бы знать, как получить идентификатор в первую очередь. Нужно ли создавать класс модели? – Caffeinatedwolf
как вы разбираете json, чтобы получить название категории? – Onheiron