Hirdetés
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Philips LCD és LED TV-k
- Multimédiás / PC-s hangfalszettek (2.0, 2.1, 5.1)
- Milyen videókártyát?
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Milyen monitort vegyek?
- Androidos tablet topic
- Méretes és széles gaming monitorral bővült az MSI kínálata
- Amlogic S905, S912 processzoros készülékek
- LG LCD és LED TV-k
Ú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
- urandom0: Mégsem számőzöm az AI-t az életemből :(
- Konzolokról KULTURÁLT módon
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- A piac legerősebb kameráját ígéri a Xiaomi 17 Ultra
- Philips LCD és LED TV-k
- Witcher topik
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Epic Store Ünnepi Ajándékozás - 10. nap: Cassette Beasts
- Windows 10
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- További aktív témák...
- 15.gen! Intel Core Ultra 9 285K +16-32GB DDR5 RAM +hűtött VRM-es Z890 lap! GAR/SZÁMLA (a Te nevedre)
- ÁRBAJNOK, MINDENRE ELÉG, A TÖKÉLETES AJÁNDÉK! VADI ÚJ GARANCIÁS MSI CYBORG RTX 4060 i7 13620h
- HP EliteBook 850 G8 Fémházas Tartós Laptop 15,6" -65% i7-1185G7 32/512 Iris Xe FHD
- Gamer PC - INTEL I7-14700KF / RTX4080 SUPER 16GB / 32GB DDR5 / 3TB SSD / 1000W 80+GOLD / 360 AIO
- Dell Optiplex 3050 Sff i5-7G /8 gb ddr4/NVME foglalt/ 250gb ssd
- Sony TA-F830ES erősítő + Sony ST-S730ES rádió tuner
- GYÖNYÖRŰ iPhone 11 Pro 64GB Silver -1 ÉV GARANCIA - Kártyafüggetlen, MS3565
- HIBÁTLAN iPhone 14 Pro 128GB Space Black -1 ÉV GARANCIA -Kártyafüggetlen, MS3590
- ÁRGARANCIA! Épített KomPhone i5 12400F 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- Akció!!! Microsoft Surface Laptop 4 13.5" i7-1185G7 16GB 512GB 1 év garancia
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


