Динамический контент для Android макета - PullRequest
3 голосов
/ 01 ноября 2011

Прошу прощения за заголовок вопроса, потому что я не совсем уверен в правильном использовании термина (ов).Я просто знакомлюсь с ListView, и я хочу сделать следующее:

- Предположим, у меня есть класс Dog, который имеет String name , String breed , и int age .

-Я бы тогда сделал много экземпляров Dog и поместил бы их в ListView, который отображает только их имена.

-У меня также был бы один макет,скажем, doginfo.xml , который имеет текст «Имя:», «Порода:» и «Возраст:».

Так, как можно сделать значения элемента, по которому щелкнули (т.е.: имя, порода, возраст) отображается на следующем мероприятии, которое является doginfo.xml ?

Ответы [ 3 ]

1 голос
/ 01 ноября 2011

Это легко. Получив ListView, установите OnItemClickListener:

listView.setOnItemClickListener(new OnItemClickListener() {
    public void onClick(AdapterView<?> parent, View view, int position, long id) {
        //Get your Dog object from the 'position' parameter you get here.
        //You should save the 'Dogs' in an array, so you can access them here easily.
        Dog d = mDogsArray[position];
        Intent intent = new Intent(YourActivity.this, DogInfoActivity.class);
        intent.putExtra("name", d.getName());
        intent.putExtra("breed", d.getBreed());
        intent.putExtra("age", d.getAge());
        startActivity(intent);
    }
}

Если вы хотите динамически добавлять / удалять собак, вы можете использовать метод ListView.setListAdapter, чтобы изменить представления, отображаемые в виде списка. Создайте адаптер массива следующим образом:

ArrayAdapter<String> dogs = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);

и добавьте собак таким образом:

dogs.add(dogInfoString)
1 голос
/ 01 ноября 2011

Позвольте мне ответить на шаг, который вы должны выполнить:

  1. Создание массива объектов класса собака ArrayList<DogClassObject>
  2. Теперь в первом упражнении просто возьмите имя из каждого объекта из ArrayList и добавьте одно за другим в ArrayList<String>.
  3. Используйте ArrayList для отображения внутри ListView первого действия.

Чтобы реализовать это, перейдите к следующему примеру: Android Simple ListView

Теперь, чтобы реализовать обработчик щелчков и отобразить dog_info, выполните следующие шаги:

  1. Реализация OnItemClickListener внутри ListView.
  2. Следуйте ответу @Jong, но передайте объект, по которому щелкнули, из ArrayList (вы можете получить объект, по которому щелкнули, из ArrayList по аргументу позиции).
  3. Получить информацию о собаке и отображаемое имя, возраст, информацию о породе внутри dog_info Чтобы реализовать это, перейдите к следующему примеру: Android - Пользовательский ListView с 2 TextViews
1 голос
/ 01 ноября 2011

Я предполагаю, что у вас есть массив / массив ваших собак, и вы добавляете их для просмотра списка. Проверьте onItemClickListener этого примера в документе Android:

http://developer.android.com/resources/tutorials/views/hello-listview.html

В вашем прослушивателе кликов используйте "int position", чтобы получить объект из массива / массива. Получив эту информацию, вы можете легко передавать ее между действиями, используя «bundle.putString ()» и «b.getString ()».

Посмотрите на этот простой учебник для получения информации о передаче данных между действиями:

http://thedevelopersinfo.wordpress.com/2009/10/15/passing-data-between-activities-in-android/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...