2013-04-27 3 views
0

К сожалению .... Я новичок в андроиде ....адаптера Android ListView в ListView (JSON дети)

Я сделал такую ​​схему: я создал ListView в моей деятельности, и положить на него адаптере с собственной деятельностью, как и во всех учебниках ...

Но теперь я должен пойти дальше и создать более сложную деятельность: на каждом моем представлении адаптера listview я должен поместить еще один цикл с данными => другим списком с адаптером ... Is это реально?

Вот мой код (я это сделать в образовательной цели):

protected void onCreate(Bundle savedInstanceState) { 
     String bank; 
     bank = this.getIntent().getStringExtra("Bank_id"); 
     url = "http://192.168.1.4:3000/exchanger_lists/get_bank_exchanger_list/"+bank+".json"; 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_bank_exchangers_list); 

     // Hashmap for ListView 
     ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>(); 

     // Creating JSON Parser instance 
     JSONParser jParser = new JSONParser(); 

     // getting JSON string from URL 
     JSONObject json = jParser.getJSONFromUrl(url); 

     try { 
      // Getting Array of Contacts 
      banks = json.getJSONArray(TAG_Exchangers); 

      // looping through All Contacts 
      for(int i = 0; i < banks.length(); i++){ 
       JSONObject c = banks.getJSONObject(i); 

       // Storing each json item in variable 
       String id = c.getString(TAG_ID); 
       String name = c.getString(TAG_NAME); 
       String address = c.getString(TAG_address); 
       String location_name = c.getString(TAG_location_name); 
       String latitude = c.getString(TAG_latitude); 
       String longitude = c.getString(TAG_longitude); 
       String exchanger_type_name = c.getString(TAG_exchanger_type_name); 

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


       map.put(TAG_ID, id); 
       map.put(TAG_NAME, name); 
       map.put(TAG_address, address); 
       map.put(TAG_location_name, location_name); 
       map.put(TAG_latitude, latitude); 
       map.put(TAG_longitude, longitude); 
       map.put(TAG_exchanger_type_name, exchanger_type_name); 


       // adding HashList to ArrayList 
       contactList.add(map); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 


     ListAdapter adapter = new SimpleAdapter(this, contactList, 
       R.layout.bank_exchanger_list_element, 
       new String[] { TAG_NAME, TAG_location_name, TAG_address, TAG_exchanger_type_name, TAG_latitude, TAG_longitude }, new int[] { 
         R.id.bank_e_n, R.id.nas_punkt_e_n , R.id.adress_obm_e_n , R.id.tip_obm_e_n , R.id.shirota_e_n , R.id.dolgota_e_n }); 

     setListAdapter(adapter); 
    } 

мне нужно разобрать JSon детей для каждого TAG_Exchangers и добавить в качестве адаптера для адаптера listAdapter адаптер = новый SimpleAdapter (это, ContactList .......

Реально ли это? и как это сделать?

ответ

0

почему не использовать BaseAdapter, где вы властвовать все связанные с тем, как он выглядит и как он использует эти данные? просто реализовать GetCount , getItem и getView.

для получения дополнительной информации о listView, смотреть «the world of listView» лекция.

+0

hm .... сложный ... почему Base? как положить тогда в него еще одну коллекцию? не могли бы вы дать код? –

+0

только что прочитал о примерах baseAdapter. Я не уверен, насколько сложно вы этого хотите, поэтому я предположил, что вам нужен baseAdapter. возможно, нет. об использовании нового списка элементов, либо создайте новый экземпляр адаптера, либо вызовите listView.setAdapter, либо установите список внутри класса адаптера и вызовите адаптер.notifyDataSetChanged(). –

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