Hirdetés
- sziku69: Fűzzük össze a szavakat :)
- Mr Dini: Mindent a StreamSharkról!
- sziku69: Szólánc.
- gban: Ingyen kellene, de tegnapra
- Magga: PLEX: multimédia az egész lakásban
- Luck Dragon: Asszociációs játék. :)
- Dr. Mózes: Lakberendezési tanácskérés
- eldiablo: 30 év után szakítottunk, de azért még beszélünk...
- Brogyi: CTEK akkumulátor töltő és másolatai
- GoodSpeed: Te hány éves vagy?
Új hozzászólás Aktív témák
-
WonderCSabo
félisten
válasz
#39560925
#3214
üzenetére
Bocs, nem ismerem a use-caset, igazad van, nem kéne így tanácsot adnom ezzel kapcsolatban.
Két dolgot tehetsz:
* custom Preference osztály, amiben megírod, hogy benne legyen a Facebook button, majd a preferences.xml fájlba berakod
* nem rakod be az xml-be, hanem addPreferencesFromResorce hívása után kódban hozzáadod a VIew-t.Az első megoldás sztem sokkal szebb.
-
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
Hirdetés
- World of Tanks - MMO
- Két 16 GB-os GeForce gyártását szüntette meg az ASUS
- Interactive Brokers társalgó
- Hobby elektronika
- Mikrotik routerek
- Az elmúlt 30 év legjobb processzorai
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- TCL LCD és LED TV-k
- Világ Ninjái és Kódfejtői, egyesüljetek!
- További aktív témák...
- Inno3D RTX 3070 ICHILL 8GB / Csavarmatricás! / Beszámítás OK!
- Eladó Konfig Intel Core Ultra 7 265KF 32GB DDR5 2TB SSD RTX5070Ti 16GB O11 EVO Lamborghini!
- Bontatlan Dobozos Új Lenovo Thinkpad T14 G5 Laptop 14" -45% Ultra 7 155U 32/512 FHD+ Magyar!
- AOC C27G4ZXE Gaming Monitor 280Hz 1Ms
- ÚJ HP Pulsefire Haste Wireless Bolti ár:30k INGYEN FOXPOST
- Xiaomi 15T Pro 12GB/256GB Mocha Gold használt, karcmentes 6 hónap garancia
- Eredeti, új Lenovo 330W töltők - ADL330SDC3A
- Vállalom FRP Lock os telefonok javítását ingyen kiszálással és akár helyszíni javittással
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- iPhone 15 Pro 256GB Blue Titanium-1 ÉV GARANCIA - Kártyafüggetlen, MS4438
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

