Xamarin Android ListViewXamarin.Android ListView

ListView는 Android 응용 프로그램의 중요 한 UI 구성 요소입니다. 메뉴 옵션의 짧은 목록에서 긴 연락처 또는 인터넷 즐겨찾기 목록에 사용 됩니다. 기본 제공 스타일로 서식 지정 하거나 광범위 하 게 사용자 지정할 수 있는 행의 스크롤 목록을 표시 하는 간단한 방법을 제공 합니다.ListView is an important UI component of Android applications; it is used everywhere from short lists of menu options to long lists of contacts or internet favorites. It provides a simple way to present a scrolling list of rows that can either be formatted with a built-in style or customized extensively.

개요Overview

목록 뷰와 어댑터는 Android 응용 프로그램의 가장 기본적인 구성 요소에 포함 되어 있습니다.List views and adapters are included in the most fundamental building blocks of Android Applications. ListView 클래스는 짧은 메뉴 또는 긴 스크롤 목록 인지 여부에 관계 없이 데이터를 표시 하는 유연한 방법을 제공 합니다.The ListView class provides a flexible way to present data, whether it is a short menu or a long scrolling list. 응용 프로그램에 대 한 모바일 친화적인 사용자 인터페이스를 빌드하는 데 도움이 되는 빠른 스크롤, 인덱스, 단일 또는 다중 선택 등의 유용성 기능을 제공 합니다.It provides usability features like fast scrolling, indexes and single or multiple selection to help you build mobile-friendly user interfaces for your applications. ListView 인스턴스에는 행 보기에 포함된 데이터를 사용하여 피드하는 어댑터가 필요합니다.A ListView instance requires an Adapter to feed it with data contained in row views.

이 가이드에서는 Xamarin. Android에서 ListView 및 다양 한 Adapter 클래스를 구현 하는 방법에 대해 설명 합니다.This guide explains how to implement ListView and the various Adapter classes in Xamarin.Android. 또한 ListView의 모양을 사용자 지정 하는 방법을 보여 주고 메모리 사용을 줄이기 위해 행 다시 사용의 중요성에 대해 설명 합니다.It also demonstrates how to customize the appearance of a ListView, and it discusses the importance of row re-use to reduce memory consumption. 활동 수명 주기가 ListView에 미치는 영향 및 사용 Adapter에 대 한 내용도 설명 합니다.There is also some discussion of how the Activity Lifecycle affects ListView and Adapter use. Xamarin.ios를 사용 하 여 플랫폼 간 응용 프로그램에서 작업 하는 경우 ListView 컨트롤이 iOS UITableView와 동일 하 게 작동 하며, Android Adapter UITableViewSource와 유사 합니다.If you are working on cross-platform applications with Xamarin.iOS, the ListView control is structurally similar to the iOS UITableView (and the Android Adapter is similar to the UITableViewSource).

먼저 간단한 자습서에서는 기본 코드 예제를 사용 하 여 ListView를 소개 합니다.First, a short tutorial introduces the ListView with a basic code example. 다음으로, 실제 응용 프로그램에서 ListView를 사용 하는 데 도움이 되는 고급 항목에 대 한 링크가 제공 됩니다.Next, links to more advanced topics are provided to help you use ListView in real-world apps.

참고

RecyclerView 위젯은 ListView의 더 강력 하 고 유연한 버전입니다.The RecyclerView widget is a more advanced and flexible version of ListView. RecyclerViewListView (및 GridView)의 후속 작업으로 설계 되었기 때문에 새 앱 개발에 ListView 대신 RecyclerView를 사용 하는 것이 좋습니다.Because RecyclerView is designed to be the successor to ListView (and GridView), we recommend that you use RecyclerView rather than ListView for new app development. 자세한 내용은 RecyclerView를 참조 하세요.For more information, see RecyclerView.

ListView 자습서ListView Tutorial

ListView ViewGroupListView is a ViewGroup 스크롤 가능한 항목 목록을 만드는입니다.that creates a list of scrollable items. 목록 항목은 IListAdapter를 사용 하 여 목록에 자동으로 삽입 됩니다.The list items are automatically inserted to the list using a IListAdapter.

이 자습서에서는 문자열 배열에서 읽은 국가 이름으로 스크롤할 수 있는 목록을 만듭니다.In this tutorial, you'll create a scrollable list of country names that are read from a string array. 목록 항목을 선택 하면 목록에 있는 항목의 위치가 알림 메시지에 표시 됩니다.When a list item is selected, a toast message will display the position of the item in the list.

HelloListView라는 새 프로젝트를 시작 합니다.Start a new project named HelloListView.

List_item 이라는 xml 파일을 만들고 리소스/레이아웃/ 폴더 내에 저장 합니다.Create an XML file named list_item.xml and save it inside the Resources/Layout/ folder. 다음을 삽입 합니다.Insert the following:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="16sp">
</TextView>

이 파일은 ListView에 배치 될 각 항목의 레이아웃을 정의 합니다.This file defines the layout for each item that will be placed in the ListView.

MainActivity.cs를 열고 클래스를 수정 하 여 ListActivity ( Activity대신)를 확장 합니다.Open MainActivity.cs and modify the class to extend ListActivity (instead of Activity):

public class MainActivity : ListActivity
{

OnCreate()) 메서드에 대해 다음 코드를 삽입 합니다.Insert the following code for the OnCreate()) method:

protected override void OnCreate (Bundle bundle)
{
    base.OnCreate (bundle);

    ListAdapter = new ArrayAdapter<string> (this, Resource.Layout.list_item, countries);

    ListView.TextFilterEnabled = true;

    ListView.ItemClick += delegate (object sender, AdapterView.ItemClickEventArgs args)
    {
        Toast.MakeText(Application, ((TextView)args.View).Text, ToastLength.Short).Show();
    };
}

작업 (일반적으로 SetContentView(int))에 대 한 레이아웃 파일을 로드 하지 않습니다.Notice that this does not load a layout file for the Activity (which you usually do with SetContentView(int))). 대신 ListAdapter 를 설정 합니다.Instead, setting the ListAdapter 속성이 자동으로 ListView 를 추가 합니다.property automatically adds a ListView ListActivity의 전체 화면을 채웁니다.to fill the entire screen of the ListActivity. 이 메서드는 ListView에 배치 될 목록 항목의 배열을 관리 하는 ArrayAdapter<T>을 사용 합니다.This method takes an ArrayAdapter<T>, which manages the array of list items that will be placed into the ListView. ArrayAdapter<T>The ArrayAdapter<T> 생성자는 응용 프로그램 Context, 각 목록 항목에 대 한 레이아웃 설명 (이전 단계에서 만든) 및 T[] 또는 Java.Util.IList<T> 를 사용 합니다.constructor takes the application Context, the layout description for each list item (created in the previous step), and a T[] or Java.Util.IList<T> ListView 에 삽입할 개체의 배열입니다.array of objects to insert in the ListView (다음에 정의 됨).(defined next).

TextFilterEnabledThe TextFilterEnabled 속성은 ListView에 대해 텍스트 필터링을 설정 하 여 사용자가 입력을 시작 하면 목록이 필터링 됩니다.property turns on text filtering for the ListView, so that when the user begins typing, the list will be filtered.

ItemClickThe ItemClick 이벤트를 사용 하 여 클릭에 대 한 처리기를 구독할 수 있습니다.event can be used to subscribe handlers for clicks. ListView 항목의 경우When an item in the ListView 를 클릭 하면 처리기가 호출 되 고 Toastis clicked, the handler is called and a Toast 클릭 한 항목의 텍스트를 사용 하 여 메시지가 표시 됩니다.message is displayed, using the text from the clicked item.

ListAdapter에 대 한 고유한 레이아웃 파일을 정의 하는 대신 플랫폼에서 제공 하는 목록 항목 디자인을 사용할 수 있습니다.You can use list item designs provided by the platform instead of defining your own layout file for the ListAdapter. 예를 들어 Resource.Layout.list_item대신 Android.Resource.Layout.SimpleListItem1를 사용해 보세요.For example, try using Android.Resource.Layout.SimpleListItem1 instead of Resource.Layout.list_item.

다음 using 문을 추가합니다.Add the following using statement:

using System;

다음으로 MainActivity의 멤버로 다음 문자열 배열을 추가 합니다.Next, add the following string array as a member of MainActivity:

static readonly string[] countries = new String[] {
    "Afghanistan","Albania","Algeria","American Samoa","Andorra",
    "Angola","Anguilla","Antarctica","Antigua and Barbuda","Argentina",
    "Armenia","Aruba","Australia","Austria","Azerbaijan",
    "Bahrain","Bangladesh","Barbados","Belarus","Belgium",
    "Belize","Benin","Bermuda","Bhutan","Bolivia",
    "Bosnia and Herzegovina","Botswana","Bouvet Island","Brazil","British Indian Ocean Territory",
    "British Virgin Islands","Brunei","Bulgaria","Burkina Faso","Burundi",
    "Cote d'Ivoire","Cambodia","Cameroon","Canada","Cape Verde",
    "Cayman Islands","Central African Republic","Chad","Chile","China",
    "Christmas Island","Cocos (Keeling) Islands","Colombia","Comoros","Congo",
    "Cook Islands","Costa Rica","Croatia","Cuba","Cyprus","Czech Republic",
    "Democratic Republic of the Congo","Denmark","Djibouti","Dominica","Dominican Republic",
    "East Timor","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea",
    "Estonia","Ethiopia","Faeroe Islands","Falkland Islands","Fiji","Finland",
    "Former Yugoslav Republic of Macedonia","France","French Guiana","French Polynesia",
    "French Southern Territories","Gabon","Georgia","Germany","Ghana","Gibraltar",
    "Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guinea","Guinea-Bissau",
    "Guyana","Haiti","Heard Island and McDonald Islands","Honduras","Hong Kong","Hungary",
    "Iceland","India","Indonesia","Iran","Iraq","Ireland","Israel","Italy","Jamaica",
    "Japan","Jordan","Kazakhstan","Kenya","Kiribati","Kuwait","Kyrgyzstan","Laos",
    "Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg",
    "Macau","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands",
    "Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova",
    "Monaco","Mongolia","Montserrat","Morocco","Mozambique","Myanmar","Namibia",
    "Nauru","Nepal","Netherlands","Netherlands Antilles","New Caledonia","New Zealand",
    "Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Korea","Northern Marianas",
    "Norway","Oman","Pakistan","Palau","Panama","Papua New Guinea","Paraguay","Peru",
    "Philippines","Pitcairn Islands","Poland","Portugal","Puerto Rico","Qatar",
    "Reunion","Romania","Russia","Rwanda","Sqo Tome and Principe","Saint Helena",
    "Saint Kitts and Nevis","Saint Lucia","Saint Pierre and Miquelon",
    "Saint Vincent and the Grenadines","Samoa","San Marino","Saudi Arabia","Senegal",
    "Seychelles","Sierra Leone","Singapore","Slovakia","Slovenia","Solomon Islands",
    "Somalia","South Africa","South Georgia and the South Sandwich Islands","South Korea",
    "Spain","Sri Lanka","Sudan","Suriname","Svalbard and Jan Mayen","Swaziland","Sweden",
    "Switzerland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","The Bahamas",
    "The Gambia","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey",
    "Turkmenistan","Turks and Caicos Islands","Tuvalu","Virgin Islands","Uganda",
    "Ukraine","United Arab Emirates","United Kingdom",
    "United States","United States Minor Outlying Islands","Uruguay","Uzbekistan",
    "Vanuatu","Vatican City","Venezuela","Vietnam","Wallis and Futuna","Western Sahara",
    "Yemen","Yugoslavia","Zambia","Zimbabwe"
  };

ListView에 배치 되는 문자열 배열입니다.This is the array of strings that will be placed into the ListView.

애플리케이션을 실행합니다.Run the application. 목록을 스크롤하거나를 입력 하 여 필터링 한 다음 항목을 클릭 하 여 메시지를 볼 수 있습니다.You can scroll the list, or type to filter it, then click an item to see a message. 다음과 같이 표시되어야 합니다.You should see something like this:

국가의 이름을 사용 하는 ListView의 예제 스크린샷Example screenshot of ListView with country names

하드 코드 된 문자열 배열을 사용 하는 것은 최상의 디자인 방법이 아닙니다.Note that using a hard-coded string array is not the best design practice. 이 자습서에서는 간단한 설명을 위해이 자습서에서 사용 되는 항목을 보여 줍니다 ListViewOne is used in this tutorial for simplicity, to demonstrate the ListView 위젯.widget. 프로젝트 리소스/값/문자열 .xml 파일의 string-array 리소스와 같이 외부 리소스에 의해 정의 된 문자열 배열을 참조 하는 것이 더 좋습니다.The better practice is to reference a string array defined by an external resource, such as with a string-array resource in your project Resources/Values/Strings.xml file. 예를 들면,For example:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string name="app_name">HelloListView</string>
  <string-array name="countries_array">
    <item>Bahrain</item>
    <item>Bangladesh</item>
    <item>Barbados</item>
    <item>Belarus</item>
    <item>Belgium</item>
    <item>Belize</item>
    <item>Benin</item>
  </string-array>
</resources>

ArrayAdapter에 이러한 리소스 문자열을 사용 하려면 원래 ListAdapter 를 바꿉니다.To use these resource strings for the ArrayAdapter, replace the original ListAdapter 다음 줄로 바꿉니다.line with the following:

string[] countries = Resources.GetStringArray (Resource.Array.countries_array);
ListAdapter = new ArrayAdapter<string> (this, Resource.Layout.list_item, countries);

애플리케이션을 실행합니다.Run the application. 다음과 같이 표시되어야 합니다.You should see something like this:

이름 목록이 작은 ListView의 예제 스크린샷Example screenshot of ListView with smaller list of names

ListView로 자세히 이동Going Further with ListView

나머지 항목 (아래 링크 참조)에서는 ListView 클래스와 함께 사용할 수 있는 다양 한 유형의 어댑터 유형을 사용 하는 방법에 대해 포괄적으로 설명 합니다.The remaining topics (linked below) take a comprehensive look at working with the ListView class and the different types of Adapter types you can use with it. 구조체는 다음과 같습니다.The structure is as follows:

  • 시각적 모양ListView 컨트롤의 부분과 작동 방법입니다.Visual Appearance – Parts of the ListView control and how they work.

  • 클래스ListView를 표시 하는 데 사용 되는 클래스의 개요입니다.Classes – Overview of the classes used to display a ListView.

  • ListView에 데이터를 표시 하 여 간단한 데이터 목록을 표시 하는 방법 – ListView's 유용성 기능을 구현 하는 방법 다른 기본 제공 행 레이아웃을 사용 하는 방법 어댑터에서 행 뷰를 다시 사용 하 여 메모리를 절약 하는 방법에 대해 설명 합니다.Displaying Data in a ListView – How to display a simple list of data; how to implement ListView's usability features; how to use different built-in row layouts; and how Adapters save memory by re-using row views.

  • 사용자 지정 모양 – 사용자 지정 레이아웃, 글꼴 및 색을 사용 하 여 ListView 스타일 변경Custom appearance – Changing the style of the ListView with custom layouts, fonts and colors.

  • Sqlite를 사용 하 여 CursorAdapter를 사용 하 여 sqlite 데이터베이스의 데이터를 표시 하는 방법을 –.Using SQLite – How to display data from a SQLite database with a CursorAdapter.

  • 활동 수명 주기 – 수명 주기에서 데이터를 채워야 하는 위치 및 리소스를 해제할 때를 비롯 하 여 ListView 활동을 구현할 때 디자인 고려 사항을 고려 합니다.Activity Lifecycle – Design considerations when implementing ListView Activities, including where in the lifecycle you should populate your data and when to release resources.

토론을 사용 하는 방법에 대 한 보다 복잡 한 예제를 소개 하기 전에 ListView 클래스 자체의 개요부터 설명 하는 설명으로 시작 합니다.The discussion (broken into six parts) begins with an overview of the ListView class itself before introducing progressively more complex examples of how to use it.

요약Summary

이 항목 집합에서는 ListView 하 고 ListActivity의 기본 제공 기능을 사용 하는 방법에 대 한 몇 가지 예를 제공 했습니다.This set of topics introduced ListView and provided some examples of how to use the built-in features of the ListActivity. 이 예에서는 다채로운 레이아웃 및 SQLite 데이터베이스를 사용할 수 있는 ListView의 사용자 지정 구현에 대해 설명 하 고 ListView 구현에서 작업 수명 주기의 관련성을 간략하게 설명 합니다.It discussed custom implementations of ListView that allowed for colorful layouts and using an SQLite database, and it briefly touched on the relevance of the activity lifecycle on your ListView implementation.