Не уверен, что название точно описывает то, что я пытаюсь сделать, но здесь идет ...
Мое приложение получает с сервера следующий объект JSON:
[{"id":"0","code":"1234","name":"thing"}]
Я хочу создать ListView для всех этих элементов (количество элементов в JSON всегда варьируется) и отображать только значение поля "name"
в моем ListView. Поэтому мой список должен выглядеть так для пользователя:
thing
another thing
third thing
...
Теперь я хочу получить значение "code"
из объекта JSON для этого конкретного "name"
при нажатии на ListView. Таким образом, с объектом выше, я получу "1234"
, когда нажмем "thing"
.
Позже я хочу отправить "code"
другому занятию и выполнить несколько последующих запросов к базе данных, используя его, но сейчас я не могу заставить это работать.
Я знаю, что с тем, что у меня есть сейчас, "code"
невидим для программы, потому что я строю свой ListView из строк "name"
из объекта JSON
У меня есть следующий OnClickListener
search_results.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// ListView item is clicked!
}
});
Мой ListView построен так:
JSONArray jsonArray = new JSONArray(json);
String[] stocks = new String[jsonArray.length()];
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject obj = jsonArray.getJSONObject(i);
stocks[i] = obj.getString( "name" );
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, stocks);
search_results.setAdapter(arrayAdapter);
Примечание: я пытался использовать MatrixCursor, но после нескольких часов возни с ним, я просто сдался ... По сути, я построил MatrixCursor таким же образом, как я строил свои акции [] и надеялся вернуть индекс выбранный элемент ListView, а затем просто использовать этот индекс на MatrixCursor, потому что я предполагаю, что они будут указывать на одно и то же? Я не уверен, что это правильный способ сделать это, хотя. И, в конце концов, я так и не смог этого понять.