ПредишенСледващото

Android: Среща - ListView

Запознайте се с Android

Composite е в папката.

ListView по-трудно да се използва в сравнение с TextView и други прости елементи. Работа със списъка се състои от две части. На първо място, ние добавяме към формата му ListView, а след това го напълнете със списъка на елементи.

Помислете за началото на един много прост пример. Поставете джаджа на форма ListView на. Вие ще видите, че списъкът ще съдържа няколко елемента и т Sub т.

Запознайте се с Android

Въпреки това, ако се вгледате в XML-кода, няма да видите нищо там.

Ходим на дейността в класната стая и писането в метода onCreate (), следния код:

Това е всичко. Да видим с кода.

Адаптери - пълнене на списък със съдържание

ListView елемент, необходим за запълване на съдържанието. Източникът на съдържанието могат да бъдат различни източници: масиви, база данни. За да се свържете информацията със списъка, така наречената адаптер.

Адаптерът обикновено е създаден с помощта на дизайн нов ArrayAdapter (контекст контекст, Int textViewResourceId, String [] обекти).

  • контекст - контекста на тока
  • textViewResourceId - Resource Identifier маркиране за всеки ред. Можете да използвате оформлението на система с ID android.R.layout.simple_list_item_1 или да създадете свой собствен оформление
  • обекти - масив от линии

метод setAdapter (ListAdapter) свързва приготвената списъка с адаптера.

Обръщаме се към Java-кода. Първо ние се инстанция на ListView в метода onCreate (). След това се определят масив от тип String. И накрая, ние не използвайте адаптера за данни, за да се сравнят данните с шаблона за оформление. Изборът на адаптер, зависи от вида на данните, използвани. В нашия случай ние използвахме ArrayAdapter клас.

отстъпление

Ако сте приели по реда, от ресурса, а след това кодът ще бъде:

И това ще бъде още по-добре, ако използвате, специално проектиран за този случай е видът на ресурса . В досието на ВЕИ / ценности / strings.xml, добавя следното:

Изпълнете проекта в емулатора, можете да видите на работна пример за превъртане списък. Въпреки това, в списъка все още не е създал реагира на натискане. Но при натискане на избрания елемент се осветява в оцветен правоъгълник (във версията на Android 2.3 е оранжево, а Android 4.0 - синьо).

Запознайте се с Android

PmWiki.CustomMarkup

В примера използваме готовия система оформлението android.R.layout.simple_list_item_1. който определя цвета, фона, височина точки и други параметри. Но няма пречки за създаване на персонализирано оформление за вашата кандидатура.

Виждаме, че като маркирането използва TextView с набор от атрибути.

Нека да създадете шаблон за отделен елемент от списъка. За да направите това в папките RES / оформление / създаване на нов файл list_item.xml:

Можете да регулирате всички атрибути в TextView, с изключение на имот Текст. тъй като текстът се попълва автоматично с контрол ListView програмен път. О, и след това просто да сменим формата на система от кода в:

Динамично се пренесат в списъка

Вземем примера на динамично пренесат списък, когато списъкът е първоначално празен и самия потребител добавя нови елементи. Поставете върху текстово поле на екрана, в който потребителят ще въведе известните му имена котка. Когато потребителят кликне върху клавиша на клавиатурата, а след това въведете името на котката ще стигнете до списъка.

Запознайте се с Android

Имахме рамка за чат, когато потребителят въведе текст и да стигне до списъка. След това трябва да получите текста от друг потребител, а също и да добавите към списъка. Между другото, думата чат от френски означава "котка". Но това е друга история.

Слушане на събития ListView

Ние трябва да се отговори на определени събития, генерирани от елемент ListView, по-специално, ние се интересуват от едно събитие, което се случва, когато потребителят кликне върху един от елементите в списъка.

Този метод ще ни помогне setOnItemClickListener ListView елемент и метод OnItemClick (AdapterView.OnItemClickListener клас).

Сега, когато кликнете върху всеки елемент от списъка, ще получите изскачащо съобщение, съдържащо текста на избрания елемент.

Естествено, ние не може да показва само съобщения, но също така и за започване на нови дейности и т.н.

Методът onItemClick () премина цялата необходима информация, за да се определи кликнали елемент в списъка. В горния пример ние използваме прост начин - да се даде на избрания елемент към обекта TextView, тъй като е известно, че всички елементи са елементи TextView (instanceOf да използвате оператора за допълнително тестване). Ние екстракт текста в избрания елемент и да го сравни с низ.

Можете също така да се провери атрибут за идентификатор за определяне на натискане на елемента в списъка.

ListView не реагира на натискане

В някои случаи, като кликнете върху елементи от менюто не работят. Ето няколко възможни причини.

A елемент от списъка съдържа отметката, която също има свои собствени преси слушатели. Опитайте се да премахнете фокуса от него:

Опитайте да преместите OnItemClickListener преди да инсталирате адаптер. Понякога е добре :-)

списък елемент съдържа ImageButton. Разположен в центъра на невярна:

списък елемент съдържа TextView. Ако използвате атрибута Android: inputType = "textMultiLine". след това да го замени с Android: minLines / андроид: maxLines.

Персонализиране на външния вид на ListView

В ListView има няколко полезни качества, които могат да направят в списъка по-привлекателна. Например, тя има разделител атрибут. който е отговорен за появата на сепаратора, както и dividerHeight атрибут. е отговорен за височината на сепаратора. Ние можем да настроите всеки цвят или изображение за сепаратора. Така например, създаване на цвят сепаратор за ресурс с червен цвят, както и размера на ресурса с височината му:

На следващо място, възложи създаден ресурс атрибут разделител. и настройте височината му атрибут dividerHeight ни ListView артикул:

Запознайте се с Android

Ако не сте удовлетворени от стандартните сепаратор, който може да се направи някаква деформирана линия, да го запишете като PNG файл и да го използвате като ресурс изтегляемото. Направи си сам.

Можете да работите с атрибутите на данни на софтуера:

Имайте предвид, че разделителят не се появява по подразбиране преди първия и последния елемент в списъка. Ако искате да промените тези настройки, да се използва свойствата позволиха Footer разделители (footerDividersEnabled атрибутите) и Header разделители активиран (headerDividersEnabled атрибутите):

селектор на потребителя

Вече видяхме, че по подразбиране избрания елемент от списъка е показана с цветни ленти. Това селектор може да бъде конфигуриран чрез listSelector атрибут. Създаване на някои текстура на селектора и да го връзвам през живота. Ето една извадка от текстурирана жълт ореол на селектора, взети от книгата Android 24 часа предварително. приложения за програмиране за операционната система на Google.

Запознайте се с Android

Ако трябва да незабавно да маркирате желания елемент в списъка, когато стартирате програмата, използвайте един куп два метода:

многовариантен избор

ListView ви позволява да изберете не само един елемент, но няколко. В този случай, трябва да инсталирате Choice Mode имот да multiplyChoice. която съответства на андроид атрибут: choiceMode = "multipleChoice".

Също така, множествена избор може да се настрои по програмен използва метод setChoiceMode (ListView.CHOICE_MODE_MULTIPLE).

Сега, ако се създаде масив от низове, като например списък с котешки храни за закуска, получаваме следния резултат.

Запознайте се с Android

Остава само да програмно маркирани елементи в списък от потребителя. Тук е моят списък на продуктите, които искам да предложим котка. Надявам се, че той се интересува от моя избор. Избраните елементи ще бъдат поставени в TextView:

Запознайте се с Android

Ако имате нужда да получите отделен списък на подбрани и извън избрани елементи в списъка, можете да напишете следното:

Проверени променлива ще съдържа списък на избраните елементи, а променливата нерегистриран - списък на елементите, които не са избрани.

Трябва да се отбележи, че в примерите използва стария метод getCheckedItemPositions (). предлага с Android 1. В Android 2.2 е с нов getCheckedItemIds (метод). Имайте предвид, че с нов метод за получаване на масив от само избраните елементи, въпреки че в повечето случаи това е достатъчно. Но този метод изисква от собствените си проблеми и в тази моя пример, той не е спечелил.

Бутон под списъка

Ако искате да поставите бутона по-долу в списъка, който не зависи от броя на елементите в ListView, а след това използвайте теглото (layout_weight).

Плавното превъртане до върха на списъка, или който и да е позиция,

В списъка има метод специален smoothScrollToPosition (). позволявайки плавно превъртане на желаното място. Достатъчно е да се посочи метода на брой елемент, за да превъртите:

приспособима превъртане

Имам ListView атрибути, за да персонализирате външния вид на книгата

ListActivity

Ако имате нужда от форма, състоящ се само от списъка, можете по-лесно да се възползват от системата, вместо стандартната клас ListActivity дейност. Този подход е описан в документацията за ListView. Един пример за работата, описана в ListActivity статията - да се създаде възможност за превъртане списък.

Допълнителна информация

Свързани статии

Подкрепете проекта - споделете линка, благодаря!