Custom ArrayAdapter

Използване на персонализиран ArrayAdapter

За показването на поредица от елементи в списък, използвайки персонализирано представяне на елементите чрез клас, трябва да се използва и индовидуално решение за XML оформление за всеки елемент. За да направим това, трябва да създадем свой собствен персонализиран ArrayAdapter клас.

Задача:

Да се създаде приложение извеждащо списък 
от потребители с името и града в който живеят.

createproject

Kлас за данни

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

public class City {
    private String name;
    private int PostCode;

    public City(String name, int postCode) {
        this.name = name;
        PostCode = postCode;
    }

    public String getName() {
        return name;
    }

    public int getPostCode() {
        return PostCode;
    }
}

Генератор на данни

Създаване на шаблон за оформление на ListView (layout)

Създава се с десен бутон върху папката layout -> new -> XML -> layout XML file

файла ще се казва: user_item.xml, защото ще съдържа визуалното описние на един ред от ListView. Root Tag ще е: LinearLayout - този таг оказва, че всички визуални елементи в него ще се подреждат в линия

От палитрата с ресурси изберете три TexView и ги провлачете върху изгледа, който създадохте.

listview

Реализация на Adapter

Aдаптера, тряба да опише процеса на преобразуване на Java обекта в изглед това става в метода getView.

Този адаптер има конструктор и getView() метод, за описване на преобразуването на елемента с данни в изглед за показване.

  • getView() е методът, който връща действителния изглед, използван като ред в ListView на определена позиция.

  • getItem() вече присъства в ArrayAdapter класа и неговата задача е просто да върне елемент от данни, от съответната позиция в колекцията с данни, който е свързан с този ArrayAdapter.

Прикачване на адаптера към ListView

За да покажем масив от елементи в ListView трябва да се дефинира UserAdapter в MainActivity:

Last updated

Was this helpful?