Xamarin.Android ListView

ListView는 Android 애플리케이션의 중요한 UI 구성 요소입니다. 메뉴 옵션의 짧은 목록에서 연락처 또는 인터넷 즐겨찾기의 긴 목록에 이르기까지 모든 곳에서 사용됩니다. 기본 제공 스타일로 서식을 지정하거나 광범위하게 사용자 지정할 수 있는 행의 스크롤 목록을 표시하는 간단한 방법을 제공합니다.

개요

목록 보기 및 어댑터는 Android 애플리케이션의 가장 기본적인 구성 요소에 포함됩니다. 이 클래스는 ListView 짧은 메뉴이든 긴 스크롤 목록이든 관계없이 데이터를 유연하게 표시할 수 있는 방법을 제공합니다. 빠른 스크롤, 인덱스 및 애플리케이션에 대한 모바일 친화적인 사용자 인터페이스를 빌드하는 데 도움이 되는 단일 또는 여러 선택과 같은 유용성 기능을 제공합니다. ListView 인스턴스에는 행 보기에 포함된 데이터를 사용하여 피드하는 어댑터가 필요합니다.

이 가이드에서는 Xamarin.Android에서 구현 ListView 하는 방법과 다양한 Adapter 클래스를 설명합니다. 또한 모양을 ListView사용자 지정하는 방법을 보여 줍니다. 또한 메모리 소비를 줄이기 위해 행 재사용의 중요성에 대해 설명합니다. 또한 활동 수명 주기가 영향을 미치고 Adapter 사용하는 방법에 대한 몇 가지 설명도 있습니다ListView. Xamarin.iOS ListView 를 사용하여 플랫폼 간 애플리케이션에서 작업하는 경우 컨트롤은 iOS UITableView 와 구조적으로 유사하며 Android Adapter 는 이와 유사 UITableViewSource합니다.

먼저 간단한 자습서에서는 기본 코드 예제를 소개합니다 ListView . 다음으로, 실제 앱에서 사용할 ListView 수 있도록 고급 항목에 대한 링크가 제공됩니다.

참고 항목

위젯은 RecyclerView 보다 고급적이고 유연한 버전의 ListView. (및GridView)의 후속 ListView 작업으로 설계되었기 때문에 RecyclerView 새 앱 개발 대신 ListView 사용하는 RecyclerView 것이 좋습니다. 자세한 내용은 RecyclerView를 참조 하세요.

ListView 자습서

ListViewViewGroup 스크롤 가능한 항목의 목록을 만드는 입니다. 목록 항목은 .를 사용하여 IListAdapter목록에 자동으로 삽입됩니다.

이 자습서에서는 문자열 배열에서 읽은 국가/지역 이름의 스크롤 가능한 목록을 만듭니다. 목록 항목을 선택하면 알림 메시지가 목록에 있는 항목의 위치를 표시합니다.

HelloListView라는 새 프로젝트를 시작합니다.

list_item.xml XML 파일을 만들고 Resources/Layout/ 폴더 내에 저장합니다. 다음을 삽입합니다.

<?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정의합니다.

확장 ListActivity 할 클래스를 열고 MainActivity.cs 수정합니다(대신Activity).

public class MainActivity : ListActivity
{

) 메서드에 대해 OnCreate()다음 코드를 삽입합니다.

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)사용)은 로드되지 않습니다. 대신 다음을 설정합니다. ListAdapter 속성이 자동으로 를 추가합니다. ListView 의 전체 화면을 ListActivity채웁니다. 이 메서드는 에 배치될 목록 항목의 배열을 관리하는 을 ListView사용합니다ArrayAdapter<T>. 입니다.ArrayAdapter<T> 생성자는 애플리케이션 Context, 각 목록 항목에 대한 레이아웃 설명(이전 단계에서 만든) 및 를 T[] 사용합니다. Java.Util.IList<T> 에 삽입할 개체의 배열 ListView (다음에 정의됨).

입니다.TextFilterEnabled 속성은 사용자가 입력을 ListView시작할 때 목록이 필터링되도록 텍스트 필터링을 켭니다.

입니다.ItemClick 이벤트는 클릭에 대한 처리기를 구독하는 데 사용할 수 있습니다. 항목의 경우 ListView 을 클릭하면 처리기가 호출되고 Toast 클릭된 항목의 텍스트를 사용하여 메시지가 표시됩니다.

플랫폼에 대해 고유한 레이아웃 파일을 ListAdapter정의하는 대신 플랫폼에서 제공하는 목록 항목 디자인을 사용할 수 있습니다. 예를 들어 .Android.Resource.Layout.SimpleListItem1Resource.Layout.list_item

다음 using 문을 추가합니다.

using System;

다음으로 다음 문자열 배열을 다음의 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될 문자열의 배열입니다.

애플리케이션을 실행합니다. 목록을 스크롤하거나 입력하여 필터링한 다음 항목을 클릭하여 메시지를 볼 수 있습니다. 다음과 비슷한 결과가 표시됩니다.

Example screenshot of ListView with country/region names

하드 코딩된 문자열 배열을 사용하는 것이 가장 좋은 디자인 방법은 아닙니다. 이 자습서에서는 간단한 설명을 위해 다음을 보여 줍니다. ListView 위젯. 더 나은 방법은 프로젝트 리소스/값/Strings.xml 파일의 리소스와 string-array 같이 외부 리소스에 의해 정의된 문자열 배열을 참조하는 것입니다. 예시:

<?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 줄은 다음과 같습니다.

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

애플리케이션을 실행합니다. 다음과 비슷한 결과가 표시됩니다.

Example screenshot of ListView with smaller list of names

ListView를 사용하여 추가 진행

다시 기본 항목(아래 링크)에서는 클래스와 함께 사용할 수 있는 다양한 유형의 어댑터 유형을 포괄적으로 ListView 살펴봅니다. 구조는 다음과 같습니다.

  • 시각적 모양 – 컨트롤의 ListView 일부 및 작동 방식.

  • 클래스 – 를 표시하는 데 사용되는 클래스 개요입니다ListView.

  • ListView 에 데이터 표시 – 간단한 데이터 목록을 표시하는 방법, 유용성 기능을 구현 ListView's 하는 방법, 다양한 기본 제공 행 레이아웃을 사용하는 방법 및 어댑터가 행 보기를 다시 사용하여 메모리를 저장하는 방법.

  • 사용자 지정 모양 – 사용자 지정 레이아웃, 글꼴 및 색을 사용하여 스타일 ListView 변경

  • SQLite 사용 – SQLite 데이터베이스에서 데이터를 CursorAdapter/>으로 표시하는 방법

  • 활동 수명 주기 – 수명 주기에서 데이터를 채워야 하는 위치와 리소스를 ListView 해제할 시기를 포함하여 활동을 구현할 때 고려할 사항을 디자인합니다.

토론(6부로 나뉘어짐)은 클래스 자체에 대한 ListView 개요로 시작하여 점진적으로 더 복잡한 사용 방법을 소개합니다.

요약

이 항목 집합은 기본 제공 기능을 ListActivity사용하는 방법에 대한 몇 가지 예제를 소개 ListView 하고 제공했습니다. 다채로운 레이아웃과 SQLite 데이터베이스를 사용할 수 있는 사용자 지정 구현 ListView 에 대해 설명했으며, 구현에서 활동 수명 주기의 관련성에 대해 ListView 간략하게 설명했습니다.