Хранение данных в элементе ListView - PullRequest
2 голосов
/ 08 октября 2010

Прежде всего, я новичок в Android. Так что это может быть очень простой вопрос, но я не смог найти ответ сам.

У меня есть две операции, я заполняю первую с именами пользователей, а другие данные, которые я получаю от удаленного запроса, а вторая используется для отображения сведений о выбранном пользователе.

Таким образом, каким-то образом мне нужно связать эти записи пользователя с элементами ListView, чтобы я мог передать часть этой информации во втором действии, используя намерение. Я не уверен, правильно это или нет, но я обнаружил, что мне нужно создать собственный ArrayAdapter. Итак, я создал класс пользователя:

class User {
   public String id;
   public String name;
}

и теперь мне нужно написать что-то вроде:

class UserAdapter extends ArrayAdapter<User> {
   ...
}

В основном на первом экране я хочу отобразить:

John Doe
Mike Brown
...

Второй сделает другой запрос на основе User.id и отобразит некоторую информацию о пользователе, например:

John Doe, 45, San Francisco

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

Спасибо.

Ответы [ 3 ]

2 голосов
/ 08 октября 2010

В методе getView вашего UserAdapter установите для тега представления что-то полезное ...

view.setTag(id);

Затем вы можете извлечь эту информацию, когда что-то щелкнет ...

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    Integer id = (Integer) view.getTag();
    // ...
}
1 голос
/ 08 октября 2010

Предполагая, что у вас уже есть список массивов, заполненный данными, которые вы хотите:

ArrayList<User>

Итак, в вашем пользовательском классе ArrayAdapter вы должны иметь:

private ArrayList<User> items;
private Context context;

public UserAdapter (Context context, int textViewResourceId, ArrayList<User> items) {
                super(context, textViewResourceId, items);
                this.items = items;
                this.context = context;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
     User u = items.get(position);
     // Then you can get each user detail and 
     // display it however you like in your view
     u.getId();
     u.getName();
     // Assuming you have setters and getters setup in your User class
     return view;
}

В вашем OnClickItemListener,Вы можете использовать «положение», чтобы определить, по какому элементу щелкнули, и использовать его для получения объекта «Пользователь».Вы должны быть в состоянии получить другие детали, как только они у вас есть.

0 голосов
/ 08 октября 2010

Я бы рекомендовал использовать Intent для передачи только идентификатора выбранного пользователя. Во втором упражнении вы можете использовать этот идентификатор для извлечения остальной информации из вашей базы данных или чего-либо еще, что вы используете. Намерения не очень подходят для отправки больших объемов данных.

...