- Samsung Galaxy S26 Ultra - fontossági sorrend
- Samsung Galaxy A56 - megbízható középszerűség
- Xiaomi 17 Ultra - jó az optikája
- Google Pixel topik
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Xiaomi 15T Pro - a téma nincs lezárva
- iPhone topik
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- Fotók, videók mobillal
- MWC 2026: Megnéztük, hol tart a Clicks Power Keyboard és Communicator
Új hozzászólás Aktív témák
-
Karma
félisten
válasz
#39560925
#3214
üzenetére
Azért sípol, mert nem használod ki a ListView újrahasznosító mechanizmusát, hanem folyamatosan új Viewkat fújatsz fel. Feltételezem, a warning buborék két findViewById hívást takar.
A tökéletes megoldásnak két lépése van, ebből az első a kritikus.
1) Használd a convertView paramétert! Ha nem null, akkor az egy olyan cella, ami kicsúszott a képből és így nincs rá szükség. Ebben az esetben az új cella létrehozása teljesen felesleges, ezt a viewt kellene bekonfigurálnod az új adatokhoz, megspórolva a példányosítást és a GC-zést.
View rowView = convertView != null
? convertView
: LayoutInflater.from(parent.getContext()).inflate(R.layout.exc_row_layout, parent, false);2) A ViewHolder minta ehhez képest már apróság, a findViewById hívásokat lehet megspórolni vele. Egy olyan custom classról van szó, aminek tagváltozóiba elteszed a TextViewk referenciáit (tehát gyártott viewnként egyszer kell keresni), a holdert pedig beállítod Tagként a cellán. Ha a convertView nem null, akkor elkéred a tagből a holdert, és azonnal írhatod az új adatokat.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
RowViewHolder viewHolder;
if (convertView == null) {
convertView = ... inflate ...;
viewHolder = new RowViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (RowViewHolder)convertView.getTag();
}
... values tömb ...
viewHolder.bindRow(values[position]);
return convertView;
}
... valahol lejjebb ...
private static class RowViewHolder {
private TextView nameView;
private TextView descView;
public RowViewHolder(View rowView) {
nameView = rowView.findViewById(...);
descView = rowView.findViewById(...);
}
public void bindRow(Exception model) {
nameView.setText(model.getName());
descView.setText(model.getDescription());
}
}
Új hozzászólás Aktív témák
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Villanyszerelés
- Gyúrósok ide!
- Apple MacBook
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Windows 11: miért nem vált mindenki?
- Windows 11
- 3DMark (2013) eredmények
- Energiaital topic
- Csillagfelhő áztatná el Elon Musk űrkarneválját
- További aktív témák...
- 200 x 60 cm Ikea Lagkapten / Alex asztal
- i5 14400F/MSI RTX 5070 GAMING TRIO OC/Corsair 32GB DDR5 6000Mhz/Samsung 980 Pro 1TB/Be quiet650WGold
- Tamron 24-70mm f2.8 Di VC USD G2 (Nikon F) eladó!
- Steelseries Arctis 9X Wireless for xbox + Xbox dongle for PC
- ASUS ROG STRIX GeForce RTX 4090 WHITE OC EDITION 24GB - Alza garancia 2027.03.19 - BESZÁMÍTOK!
- HP Zbook Studio G5 - 15,6" UHD kijelző, Xeon E-2176M, 16GB RAM, 512GB SSD, Quadro P1000 4GB, számla
- iPhone 13 128GB Red -1 ÉV GARANCIA - Kártyafüggetlen, MS4570, 100% AKKSI
- Apple iPhone 16 Plus Pink 128GB használt karcmentes 94% akku (316 ciklus) 6 hónap garancia
- KIÁRUSÍTÁS - HP Elite / ZBook Thunderbolt 3 Dock (akár 2x4K felbontás)
- AKCIÓ! GIGABYTE A520M R5 1400 8GB DDR4 256GB SSD 500GB HDD GTX 1050 Ti 4GB ZALMAN S3 400W
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

