NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Android - použití ListView a vzoru Holder

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Pepa
Člen
Avatar
Pepa:7.6.2016 10:19

Zkuším si vytváření jednoduchých ListView podle
https://gist.github.com/…-git/5150698, kde se využívá recyklace řádků s pomocí convertView. V metodě getView je na řádku č. 19 uvedeno:

holder = (ViewHolder) convertView.get­Tag();

Není mi jasné, jak je zaručeno, že toto convertView obsahuje právě ten tag, který je pro tento řádek příslušný. Chápu správně, že toto convertView bylo dříve použito třeba v úplně jiném řádku?

 
Odpovědět
7.6.2016 10:19
Avatar
Odpovídá na Pepa
Petr Štechmüller:7.6.2016 10:46
@Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder holder;

        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.list_entry, null);
            holder = new ViewHolder();
            holder.nameTextView = (TextView) convertView.findViewById(R.id.person_name);
            holder.surnameTextView = (TextView) convertView.findViewById(R.id.person_surname);
            holder.personImageView = (ImageView) convertView.findViewById(R.id.person_image);
            convertView.setTag(holder); // Zde ten tag nastavuješ, pokud je holder null
        }
        else {
            holder = (ViewHolder) convertView.getTag(); // Zde vytáhnše viewHolder podle dříve nastaveného tagu
        }

        Person person = getItem(position);

        holder.nameTextView.setText(person.getName());
        holder.surnameTextView.setText(person.getSurname());
        //holder.personImageView.setImageBitmap(person.getImage());

        return convertView;
    }
Nahoru Odpovědět
7.6.2016 10:46
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Pepa
Člen
Avatar
Odpovídá na Petr Štechmüller
Pepa:7.6.2016 12:15

Díky za odpověď, ale pořád to nechápu ;-(
Pokud se nepletu, tak i když mám seznam s tísícem položek, tak je za běhu aplikace vytvořeno jen tolik View, kolik se jich vejde na obrazovku. U jakých View jsou potom uloženy ty všechny holder tagy?

 
Nahoru Odpovědět
7.6.2016 12:15
Avatar
Odpovídá na Pepa
Petr Štechmüller:7.6.2016 13:46

Tady je to dobře popsáno, tedy jestli Ti nedělá problém angličtina :)
http://stackoverflow.com/a/25966926

Nahoru Odpovědět
7.6.2016 13:46
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.