2017-01-31 3 views
-4

Я работаю над приложением, которое касается кинотеатров и фильмов, работающих в этом театре. Я успешно проанализировал файл JSON, благодаря переполнению стека! Но я застрял на показе имен JSON ARRAY на счетчике.Как отображать имена JSON Array в прядильщике?

Это файл JSON.

{ 
"Abirami": [      //Theatre 1 
    { 
    "name": "Bairavaa - Tamil" 
    }, 
    { 
    "name": "Koditta Idangalai Nirappuga - Tamil" 
    }, 
    { 
    "name": "Gautamiputra Satakarni - Telugu" 
    }, 
    { 
    "name": "Khaidi No. 150 - Telugu" 
    } 
], 
"AGS_OMR": [      //Theatre 2 
    { 
    "name": "Gautamiputra Satakarni - Telugu" 
    }, 
    { 
    "name": "Bairavaa - Tamil" 
    }, 
    { 
    "name": "xXx: Return Of Xander Cage (3D) - English" 
    }, 
    { 
    "name": "OK Jaanu - Hindi" 
    }, 
    { 
    "name": "Koditta Idangalai Nirappuga - Tamil" 
    } 
], 
"AGS_TNagar": [     //Theatre 3 
    { 
    "name": "xXx: Return Of Xander Cage (3D) - English" 
    }, 
    { 
    "name": "Bairavaa - Tamil" 
    }, 
    { 
    "name": "OK Jaanu - Hindi" 
    }, 
    { 
    "name": "Koditta Idangalai Nirappuga - Tamil" 
    } 
], 
"AGS_Villivakkam": [ 
    { 
    "name": "Bairavaa - Tamil" 
    }, 
    { 
    "name": "OK Jaanu - Hindi" 
    }, 
    { 
    "name": "Khaidi No. 150 - Telugu" 
    }, 
    { 
    "name": "Koditta Idangalai Nirappuga - Tamil" 
    } 
], 
"INOX_Arcot_Road": [ 
    { 
    "name": "Bairavaa - Tamil" 
    }, 
    { 
    "name": "Dhuruvangal Pathinaaru - Tamil" 
    }, 
    { 
    "name": "Gautamiputra Satakarni - Telugu" 
    }, 
    { 
    "name": "xXx: Return Of Xander Cage (3D) - English" 
    }, 
    { 
    "name": "Koditta Idangalai Nirappuga - Tamil" 
    }, 
    { 
    "name": "OK Jaanu - Hindi" 
    }, 
    { 
    "name": "Khaidi No. 150 - Telugu" 
    } 
], 
"INOX_Citi_Centre": [ 
    { 
    "name": "Dhuruvangal Pathinaaru - Tamil" 
    }, 
    { 
    "name": "xXx: Return Of Xander Cage (3D) - English" 
    }, 
    { 
    "name": "Bairavaa - Tamil" 
    }, 
    { 
    "name": "Koditta Idangalai Nirappuga - Tamil" 
    }, 
    { 
    "name": "OK Jaanu - Hindi" 
    } 
], 
"LUXE": [ 
    { 
    "name": "Dangal (Tamil) - Tamil" 
    }, 
    { 
    "name": "Dangal - Hindi" 
    }, 
    { 
    "name": "Live By Night - English" 
    }, 
    { 
    "name": "Bairavaa - Tamil" 
    }, 
    { 
    "name": "OK Jaanu - Hindi" 
    }, 
    { 
    "name": "Khaidi No. 150 - Telugu" 
    }, 
    { 
    "name": "Gautamiputra Satakarni - Telugu" 
    }, 
    { 
    "name": "Koditta Idangalai Nirappuga - Tamil" 
    }, 
    { 
    "name": "Shatamanam Bhavati - Telugu" 
    } 
], 
"mayajaal": [ 
    { 
    "name": "Khaidi No. 150 - Telugu" 
    }, 
    { 
    "name": "Bairavaa - Tamil" 
    }, 
    { 
    "name": "xXx: Return Of Xander Cage (3D Tamil) - Tamil" 
    }, 
    { 
    "name": "xXx: Return Of Xander Cage (3D) - English" 
    }, 
    { 
    "name": "Koditta Idangalai Nirappuga - Tamil" 
    }, 
    { 
    "name": "Kirik Party - Kannada" 
    }, 
    { 
    "name": "Dangal - Hindi" 
    }, 
    { 
    "name": "Shatamanam Bhavati - Telugu" 
    }, 
    { 
    "name": "Haraamkhor - Hindi" 
    }, 
    { 
    "name": "Gautamiputra Satakarni - Telugu" 
    } 
], 
"PVR_Ampa": [ 
    { 
    "name": "xXx: Return Of Xander Cage (3D) - English" 
    }, 
    { 
    "name": "Khaidi No. 150 - Telugu" 
    }, 
    { 
    "name": "Passengers (3D) - English" 
    }, 
    { 
    "name": "Gautamiputra Satakarni - Telugu" 
    }, 
    { 
    "name": "Bairavaa - Tamil" 
    }, 
    { 
    "name": "OK Jaanu - Hindi" 
    }, 
    { 
    "name": "Live By Night - English" 
    }, 
    { 
    "name": "Koditta Idangalai Nirappuga - Tamil" 
    }, 
    { 
    "name": "Dangal - Hindi" 
    }, 
    { 
    "name": "Shatamanam Bhavati - Telugu" 
    } 
], 
"PVR_Velachery": [ 
    { 
    "name": "Dhuruvangal Pathinaaru - Tamil" 
    }, 
    { 
    "name": "Khaidi No. 150 - Telugu" 
    }, 
    { 
    "name": "Bairavaa - Tamil" 
    }, 
    { 
    "name": "OK Jaanu - Hindi" 
    }, 
    { 
    "name": "Koditta Idangalai Nirappuga - Tamil" 
    }, 
    { 
    "name": "xXx: Return Of Xander Cage (3D) - English" 
    }, 
    { 
    "name": "Dangal - Hindi" 
    } 
] 
} 

Как отображать только театры, такие как Театр 1,2,3 и т. Д. В прядильщике? Файл JSON присутствует в папке «Активы» в Android Studio.

EDIT: Разбор JSON-файла из активов.

private ArrayList<String> getTheatres(String theatre_results) { 
     JSONArray jsonArray = null; 
     ArrayList<String> cList = new ArrayList<String>(); 
     try { 
      InputStream is = getResources().getAssets().open(theatre_results); 
      int size = is.available(); 
      byte[] data = new byte[size]; 
      is.read(data); 
      is.close(); 
      String json = new String(data, "UTF-8"); 
      jsonArray = new JSONArray(json); 
      if (jsonArray != null) { 
       for (int i = 0; i < jsonArray.length(); i++) { 
        cList.add(jsonArray.getJSONObject(i).getString("name")); 
        System.out.println("value is "+cList.get(0)); 
       } 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (JSONException je) { 
      je.printStackTrace(); 
     } 
     return cList; 
    } 
+1

Есть много ресурсов там; поиск сначала – dsharew

+0

@DegenSharew Небольшая помощь была бы замечательной. Я пробовал свои лучшие поиски и поэтому спросил об этом. Пожалуйста помоги. –

+0

, пожалуйста, покажите , как вы разбираете JSON в своем коде. –

ответ

0
JSONObject rootJsonObject = new JSONObject(json); 
Iterator iterator = rootJsonObject.keys(); 
    while(iterator.hasNext()){ 
    //this below key will be the names of your each theater, you may 
    //add it into a list to populate spinner 
    String key = (String)iterator.next(); 
    JsonArray theaterArray = rootJsonObject.getJsonArray(key); 
    } 

после добавления всех ключей в список, вы можете заполнить ваш кок Фро этого списка. Я хотел бы предложить вам еще лучший подход, сделать HashMap как этот

HashMap<String, JsonArray> = new HashMap(); 

добавить все данные в ней, заполнить ваш кок с ключами HashMap и при выборе любого пункта вращателя вы можете получить все ваши внутри данных (массив театров) из hashmap против этого конкретного ключа.

+0

Большое спасибо. Я попробую это как можно скорее и дам вам знать! –

+0

np, дайте мне знать, если вы столкнулись с какой-либо проблемой и принимаете ответ, который он помогает :) –

0

Попробуйте этот код, чтобы получить все театральные имена

ArrayList<String> theaters = getTheaters(theatre_results); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(context,android.R.layout.simple_list_item_1,android.R.id.text1,theaters); 
spinner.setAdapter(adapter); 

private ArrayList<String> getTheatres(String theatre_results) { 
     JSONObject jsonObj = null; 
     try { 
      InputStream is = getResources().getAssets().open(theatre_results); 
      int size = is.available(); 
      byte[] data = new byte[size]; 
      is.read(data); 
      is.close(); 
      String json = new String(data, "UTF-8"); 
      jsonObject = new JSONObject(json); 
      return jsonObject.names(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (JSONException je) { 
      je.printStackTrace(); 
     } 
     return cList; 
    } 

Используйте этот список, чтобы создать адаптер и установить его на прядильную

+0

Попробуй как можно скорее и сообщите об этом! Благодарю. –

+0

У вас есть JSONObject, но вы пытаетесь создать JSONArray ... – Abilash

Смежные вопросы