Статьи

Отображение списка строк в Android ListView

Отображение списка элементов является очень распространенным шаблоном в мобильном приложении. Этот шаблон часто встречается, когда я создаю учебное пособие: мне часто нужно взаимодействовать с данными, но я не хочу тратить много времени только на отображение этих данных, когда это не является предметом учебного пособия. Итак, что является самым простым способом отобразить простой список значений в Android, как список строк?

В Android SDK виджет, используемый для отображения списков элементов, представляет собой ListView . Список должен всегда получать свои данные из класса адаптера. Этот класс адаптера управляет макетом, используемым для отображения каждого отдельного элемента, его поведения и самих данных. Всем остальным виджетам, отображающим несколько элементов в Android SDK, таким как счетчик и сетка, также необходим адаптер.

Когда я делал счетчик строк для моей серии при сохранении данных с Android , мне нужно было показать список всех проектов в базе данных, но я хотел сделать абсолютный минимум. Названия проектов являются строками, поэтому я использовал класс ArrayAdapter из Android SDK для отображения этого списка строк. Вот шоу для создания адаптера и установки его в виде списка для отображения списка элементов:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
private ListView mListView;
 
@Override
protected void onStart()
   {
   super.onStart();
 
   // Add the project titles to display in a list for the listview adapter.
   List<String> listViewValues = new ArrayList<String>();
   for (Project currentProject : mProjects) {
       listViewValues.add(currentProject.getName());
       }
 
   // Initialise a listview adapter with the project titles and use it
   // in the listview to show the list of project.
   mListView = (ListView) findViewById(R.id.list);
   ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                               android.R.layout.simple_list_item_1, android.R.id.text1,
                               listViewValues.toArray(new String[listViewValues.size()]));
  mListView.setAdapter(adapter);
  }

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private ListView mListView;
 
@Override
protected void onStart()
   {
   [...]
 
   // Sets a click listener to the elements of the listview so a
   // message can be shown for each project.
   mListView.setOnItemClickListener(new OnItemClickListener() {
 
   @Override
   public void onItemClick(AdapterView<?> parent,
                           View view,
               int position,
                           long id) {
      // Get clicked project.
      Project project = mProjects.get(position);
      // Open the activity for the selected project.
      Intent projectIntent = new Intent(MainActivity.this, ProjectActivity.class);
      projectIntent.putExtra("project_id", project.getId());
      MainActivity.this.startActivity(projectIntent);
   }

Если вам нужно пойти дальше, чем макет по умолчанию, вам нужно создать свой собственный макет и адаптер для отображения данных так, как вы хотите, но того, что показано здесь, достаточно, чтобы начать отображать данные. Если вы хотите запустить пример, вы можете найти полный проект RowCounter на моем GitHub по адресу http://github.com/CindyPotvin/RowCounter : просмотр списка — это файл MainActivity.java .