2013-05-22 2 views
0

У меня есть простая структура приложения, которая просто загружает некоторые данные mysql и отображает ее в виде списка. Фрагмент кода показывает, что я делаю.Как добавить id в arraylist

public class MyActivity extends Activity implements AdapterView.OnItemClickListener { 
    private static final String TAG = "centrActivity"; 

    ListView listView; 
    ArrayList<String> randomCentr; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     parseJson(); 

     ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, randomTorgCentr); 
     listView = (ListView) findViewById(R.id.list); 
     listView.setAdapter(adapter); 
     listView.setChoiceMode(ListView.CHOICE_MODE_NONE); 
     listView.setOnItemClickListener(this); 
    } 

    private ArrayList<String> parseJson() { 
     randomCentr = new ArrayList<String>(); 

     JSONArray centr = null; 

     //url 
     String url = ""; 

     JSONParser jsonParser = new JSONParser(); 

     JSONObject jsonObject = jsonParser.getJSONFromUrl(url); 
     Log.i(TAG, jsonObject.toString()); 
     try { 
      torgCentr = jsonObject.getJSONArray("callback"); 
      Log.i(TAG, torgCentr.toString()); 
      for (int i=0; i<torgCentr.length(); i++) { 
       JSONObject o = torgCentr.getJSONObject(i); 
       String id = o.getString("id"); 
       String name = o.getString("name"); 
       randomCentr.add(i, name); 
       Log.i(TAG, randomTorgCentr.get(i)); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return randomTorgCentr; 
    } 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     Log.i(TAG, randomCentr.get(position)); 
    } 
} 

Все отображается, но у меня есть проблема. У меня есть таблицы, которые связаны с этим идентификатором. У меня есть только атрибут name таблицы в списке. Итак, как указать для каждого элемента его id из json-файла, поэтому я мог бы создать новый запрос на основе идентификатора элемента и отобразить подробные данные элемента?

ответ

1

Я предлагаю вам создать модель для ваших данных и расширить BaseAdapter и создать коллекции ваших моделей, сопоставленных с ней. Другим вариантом было бы просто создать простой Map и иметь индекс как ключ, а id - как значение. Но я рекомендую вам перейти с первым вариантом.

3

Вместо ArrayListHashMap. В HashMap вы можете сохранить пару значений ключа. Таким образом, в вашем случае вы можете сохранить идентификатор и его данные соответственно.

+0

Большое спасибо за ваш ответ. Я использовал хэш-карту, но у меня были проблемы с отображением данных. Можете ли вы показать мне фрагмент кода или ссылку с учебником? – PAcan

+0

@PAcan есть много учебников там .. попробуйте один .. отправьте свой код с тем, что вы пробовали .. Тогда я могу вам помочь – stinepike

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