Új hozzászólás Aktív témák
-
Sianis
addikt
válasz
lordjancso
#1407
üzenetére
Ez nem nyerő?
Sianis
-
SektorFlop
aktív tag
válasz
lordjancso
#1355
üzenetére
köszi

-
lordjancso
senior tag
válasz
lordjancso
#1307
üzenetére
Egyelőre a legjobbnak tűnő megoldás:
@Override
public void onDestroyView() {
super.onDestroyView();
setListAdapter(null);
} -
Karma
félisten
válasz
lordjancso
#1304
üzenetére
A ListView addHeaderView metódusa nem jó erre? Az adapter beállítása előtt hívd meg.
-
lordjancso
senior tag
válasz
lordjancso
#1302
üzenetére
Na még jó, hogy a hibaüzenetben ott van a válasz, csak nem gondoltam, hogy ilyen triviális lesz...
A megoldás annyi volt, hogy az xml-ben lévő ListView-nak fixen az alábbi id-t kell adni:
android:id="@android:id/list" -
Karma
félisten
válasz
lordjancso
#1238
üzenetére
Hm. Megpróbálhatnád azt, hogy felüldefiniálod a setBounds metódust az UrlDrawable-ben úgy, hogy a tagváltozóba rakott képre is meghívja azt, ugyanazokkal a paraméterekkel.
Mondjuk célszerű azt az esetet is kezelni, ha még null a kép, és majd a jövőben jön létre. Az előző bekezdésben leírt módosításon túl az onPostExecute-ban fel kell cserélned az urlDrawable.drawable = result sort a setBoundsszal, így az új méret mindkét objektumra hat.
-
Karma
félisten
válasz
lordjancso
#1236
üzenetére
Az onPostExecute-ban van egy setBounds hívás, azt kell módosítanod úgy, hogy azt csinálja amit szeretnél.
-
Karma
félisten
válasz
lordjancso
#1233
üzenetére
Bevallom sose használtam az ImageGetter megoldást, ha HTML-t kellett megjeleníteni, mindig a WebView-t preferáltam. Kicsit keresgélve úgy tűnik, hogy az invalidate hívás tényleg nem rendezi újra a tartalmat.
Workaroundot láttam: a WeakReference<View> helyett WeakReference<TextView>, és az invalidate helyett kell egy c.setText(c.getText()) hívás.
-
Karma
félisten
válasz
lordjancso
#1221
üzenetére
Semmi nagy dologra nem gondoltam, két dolgot változtatnék a példán a rend kedvéért:
1) Ahogy nézem, nem használja fel az URLImageGetter a konstruktorban átadott Contextet, úgyhogy a tagváltozót és a paramétert törölném azonnal. Ha meg mégis kéne, akkor a View-tól kérném el.
2) A container tagváltozója ugyanennek az osztálynak erősen kapaszkodik (hard reference) a View-ba, úgyhogy ha mondjuk a letöltés tíz percig tart, a felhasználó már régen továbbállt mert megunta, akkor se tudja a GC felszabadítani az egész Activityt.
Könnyen elkerülhető, ha a container tagváltozó nem View, hanem WeakReference<View> típusú. Két sort kell módosítani hozzá, és máris nem akadályozza a GC-t – csak le kell ellenőrizni onPostExecute-ban, hogy megvan-e még a View, vagy már vége.public class URLImageParser implements ImageGetter {
WeakReference<View> container;
public URLImageParser(View t) {
this.container = new WeakReference<View>(t);
}
public class ImageGetterAsyncTask extends AsyncTask<String, Void, Drawable> {
URLDrawable urlDrawable;
...
@Override
protected void onPostExecute(Drawable result) {
View c = URLImageParser.this.container.get();
if (c == null) return;
...
// redraw the image by invalidating the container
c.invalidate();
}
...
}
}[ Módosította: doc ]
-
Karma
félisten
válasz
lordjancso
#1219
üzenetére
Javaslom ezt a StackOverflow kérdést és az elfogadott válaszát megtekintésre. Mivel a TextView adott, csak az ImageGetter interfészt tudnád használni, arra meg ez egy járható megoldásnak tűnik.
Bár én biztosan WeakReference-et raknék el a View-hoz.
-
Karma
félisten
válasz
lordjancso
#1204
üzenetére
Azt vágod, hogy az onCreate-ben egy lokális változót hoztál létre, miközben az osztályod tagváltozója soha nem kap (az indító nullon kívül) értéket? Vedd ki az "ArticleAdapter" típusnevet az értékadás előtt.
-
Sianis
addikt
válasz
lordjancso
#1201
üzenetére
A példányosított adapter nem null? A getCount() metódusa nem 0-t ad vissza? a getView() nem üres vagy null view-kat ad vissza?
Sianis
Új hozzászólás Aktív témák
- E-roller topik
- PayPal
- Fejhallgató erősítő és DAC topik
- Honor Magic6 Pro - kör közepén számok
- AI, GitHub Copilot, Claude, Gemini
- Milyen billentyűzetet vegyek?
- Hogy is néznek ki a gépeink?
- Ilyen olcsó sem volt még egy Apple notebook
- Milyen belső merevlemezt vegyek?
- Milyen légkondit a lakásba?
- További aktív témák...
- Új Honor X7d 128GB, Kártyafüggetlen, 1 Év Garanciával
- Lenovo Thunderbolt 3 kábel (4X90U90617)
- Beszámítás! Benq Zowie XL2411 24 144Hz FHD TN 1ms monitor garanciával hibátlan működéssel
- Apple iPhone 11 Pro Max 256GB - Kártyafüggetlen, Grafit, 100% Akku - 1 Év Garanciával
- HIBÁTLAN iPhone 13 256GB Starlight-1 ÉV GARANCIA - Kártyafüggetlen, MS4676, 100% AKKSI
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

