Avatar
Pepa
Člen
Avatar
Pepa:

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. června 10:19
Avatar
Odpovídá na Pepa
Petr Štechmüller:
@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. června 10:46
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Pepa
Člen
Avatar
Odpovídá na Petr Štechmüller
Pepa:

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. června 12:15
Avatar
Odpovídá na Pepa
Petr Štechmüller:

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. června 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.