Hirdetés
- Fali konzol lapos tévékhez
- VR topik
- Azonnali VGA-s kérdések órája
- TCL LCD és LED TV-k
- Szünetmentes tápegységek (UPS)
- Először beszélt bővebben az új Xbox konzolról a Microsoft
- Melyik tápegységet vegyem?
- Apple MacBook
- Mégis meglepi egy új GeForce-szal a rajongókat az NVIDIA?
- Ilyen olcsó sem volt még egy Apple notebook
Ú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
- LG 45GR65DC-B 45 / 5120x1440 / 200HZ / VA /
- Chieftec Smart Seriels GPS-500A8 80 Plus minősítésű 500W tápegység
- Apple iPhone 13 - 85% Akku - 128GB - Független - Hibátlan
- HONOR Magic8 Lite 5G 512GB + CHOICE Cubuds - Gyári Bontatlan, 2028-ig garanciális
- HONOR Magic8 Pro 5G 12/512GB (Black) - Új, Kártyafüggetlen, 2029-ig garanciális
- Apple iPhone 12 Pro Max 256GB, Kártyafüggetlen, 1 Év Garanciával
- PlayStation Okosító Blu-ray lemezek - PS4 GoldHEN Loader / BD-JB Lapse és PS5 Auto Jailbreak AIO
- Lenovo ThinkPad dokkolók: USB-C 40A9/ 40AY/ 40AS/ Thunderbolt 3 40AC/ Hybrid USB-C DisplayLink 40AF
- iKing.Hu - Samsung Galaxy S24 Ultra 120 Hz Dynamic AMOLED 2X, beépített S Pen, Galaxy AI 12/256 GB
- Poco F4 GT 12/256GB - Független, Fekete - 1 Év Garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

