Hirdetés
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Elektromos rásegítésű kerékpárok
- MasterDeeJay: Intel Optane M10: mire lehet használni?
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- laskr99: Processzor és videokártya szilícium mag fotók újratöltve!
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sziku69: Szólánc.
- eBay-es kütyük kis pénzért
- gerner1
Ú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
- X1 Nano Gen2 13" 2K IPS i7-1260P 16GB 512GB NVMe ujjlolv IR kam gar
- Nagyon szép,megkímélt Asus 15,6",Intel(2,58Ghz)Hibátlan Működésű,nagyon jó akku,NO SSD,NO TÖLTŐ
- Thinkpad X13 Gen4 13.3" FHD+ IPS i7-1365U 16GB 256GB NVMe ujjlolv gar
- SAPPHIRE RX 9070 XT 16GB GDDR6 PULSE GAMING - Új, 2 év gari - Eladó!
- ThinkPad X13 Gen5 13.3" FHD+ IPS Ultra 5 135U 16GB 256GB NVMe magyar vbill ujjolv IR kam gar
- Inno3D RTX 5070 // Felbontott, új // SZÁMLA // GARANCIA //
- Dell Latitude E7270,12.5",FHD,i7-6600U,8GB DDR4,256GB SSD,WIN11
- Lenovo ThinkPad T14s Gen 3 i5-1245U 14" FHD+ 16GB 512GB 1 év teljeskörű garancia
- NEO-t vennél? NE TEDD!!! KÉSZLETKISÖPRÉSI UltraAkcióóó! Air M4 16GB 512GB Garancia - több színben!
- Kuriózum: Ozark Trail (amerikai) fejlámpa 600 lumen
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
