2017-01-29 6 views
0

мой код этоListView скрытое значение из jsonArray

JSONArray jsonArray = jObj.getJSONArray("subject"); 
System.out.println(jsonArray.length()); 
ArrayList<String> arrayList = new ArrayList<>(); 

for(int i=0; i<jsonArray.length(); i++){ 
    JSONObject jsonObject = jsonArray.getJSONObject(i); 
    String id = jsonObject,getString("idSubject"); 
    String name = jsonObject.getString("name"); 
    arrayList.add(name); 
} 

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String(MainActivity.this, android.R.layout.simple_expandable_list_item_1, arrayList); 
ListView mylist = (ListView) findViewById(R.id.subjectListView); 
mylist.setAdapter(arrayAdapter); 

Я хочу знать, если это возможно, чтобы связать к каждому элементу ListView в скрытое значение (значение идентификатор из jsonArray) и получить его при вызове OnItemClickListener listView. Большое спасибо

+0

Если вы хотите скрытые элементы, то вам нужно заменить android.R.layout .simple ... С вашим собственным расположением. Вам также понадобится адаптер пользовательских объектов, а не только строки. –

ответ

0

Вы можете установить свое скрытое значение как тег во время рендеринга рендеринга.

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String(MainActivity.this, android.R.layout.simple_expandable_list_item_1, arrayList){ 
       @NonNull 
       @Override 
       public View getView(int position, View convertView, ViewGroup parent) { 
        View view= super.getView(position, convertView, parent); 
     JSONObject jsonObject = jsonArray.getJSONObject(position); 
     String id = jsonObject,getString("idSubject"); 
        view.setTag(id); 
       } 
      }; 

И в onItemSelected

@Override 
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 

     String id=(String)view.getTag() 
} 

Cast это идентификатор исходного типа (строка, целое число или что-нибудь еще)

+0

по положению, список, который передается в адаптере и json-массиве, имеет одинаковое индексирование. –

+1

добавить 'final' перед' JSONArray jsonArray = jObj.getJSONArray («subject»); ' –

+0

, и у меня тоже есть обновленный ответ (изменен i на позицию) –

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