Hirdetés
- AMD vs. INTEL vs. NVIDIA
- 5.1, 7.1 és gamer fejhallgatók
- Milyen videókártyát?
- Gaming notebook topik
- Hobby elektronika
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- HiFi műszaki szemmel - sztereó hangrendszerek
- Videós, mozgóképes topik
- Épített vízhűtés (nem kompakt) topic
- Mire van szükségem: WiFi Bridge, Access Point, Range Extender, Mesh?
Új hozzászólás Aktív témák
-
lordjancso
senior tag
Csináltam egy ListView-t, aminek a tartalmát egy mysql adatbázis alapján töltöm fel.
Lekérem az elemeket json-ban, parse-olom, majd megjelenítem. Teljesen tiszta sor.
Emulátorban tökéletesen működik minden, viszont a teszt telefonomon (Samsung Galaxy S3, gyári 4.1.2-es android) nem mindig tudta betölteni a tartalmat. Ez a "nem mindig" azt jelenti, hogy 10-15 próbálkozásból csak egyetlen egy alkalommal tölti fel a ListView-t a json alapján.
A json parse-olás try-catch blokkban van. A hiba során az exception.getMessage() azt mondja, hogy
Unterminated object at character 2054 of [{"id": ........
A ... rész ugye a teljes feldolgozandó json stringben. Ezt úgy értelmeztem, hogy a 2054. karakter nem tetszik neki, viszont az egész json-om nincs 1200 karakter hosszú.
Találkozott már valaki hasonló jelenséggel? Van valami ötletetek erre a problémára? -
lordjancso
senior tag
Nem tud valaki egy elegáns megoldást arra, hogy hogyan ellenőrizzem le, hogy a szerver él-e, amihez async kéréseket szeretnék intézni az alkalmazásban? Szerintem a legjobb lenne, minden async kérés doInBackground metódusában.
Pár megoldást már megpróbáltam (stackoverflow-n amit találtam), de elegánsnak egyik sem volt igazán nevezhető. Ami meg egyszerűnek és jónak tűnt, az vagy csak 2.x-en, vagy csak 4.x-en működött. -
lordjancso
senior tag
válasz
SektorFlop
#1354
üzenetére
Amikor beállítod a ListView adapterének az új elemeket, utána hívj meg egy frissítést az adapteren:
adapter.notifyDataSetChanged(); -
lordjancso
senior tag
Lenne még egy kérdésem.

Ezt a Pager Sliding TabStrip-et használom az alkalmazásomban.
Az első activity-mben jelenítek meg három fragmentet és aközött lehet lapozni vele.
A main activity-m xml-je így néz ki:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/app_background"
android:orientation="vertical" >
<hu.lordjancso.myapp.ui.PagerSlidingTabStrip
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="38dp"
android:alpha="0.5"
android:background="#000000" />
<android.support.v4.view.ViewPager
android:id="@+id/vp_mainmenu"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</android.support.v4.view.ViewPager>
</LinearLayout>Jól látszik, hogy a Tabok alatt jelenik meg a ViewPager, amiben lehet görgetni a fragmenteket.
Azt meg tudnám valahogy oldani, hogy nem egymás alatt helyezkedjenek el, hanem a ViewPager legyen fullscreen és a Tabok rálógjanak a ViewPagerre?
Valami olyan elképzelésem lenne, hogy a Tabok kb a kijelző közepén jelennek meg, az "alatta" lévő ViewPagerben lévő fragmentek ListFragmentek, és amikor az éppen aktuális ListFragment elemeit lefelé görgetem (tehát a tartalom ÉS a Tabok is haladnak felfelé), majd a tabok teteje eléri a kijelző tetejét, akkor azok "odaragadjanak", de a ListView elemeit tovább lehessen görgetni lefelé (ha még van benne tartalom persze).
És természetesen a balra-jobbra görgetés is működjön, amivel a ViewPagerben lévő fragmentek között tudok váltogatni.
Valakinek van rá ötlete?
Karma, benned bízom!
-
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);
} -
lordjancso
senior tag
Igen, ez a megoldás már közelít, de még így sem tökéletes:
Az adaptert eddig az onCreate-ben állítottam be. Mivel muszáj az adapter beállítás előtt meghívni az addHeaderView-t, így az onCreate-ből ki kellett vennem az adaptert.
Az onCreate után meghívja az onCreateView-t. Itt elkérek egy referenciát a headerbe beállítandó layoutra, majd inflatelem a view-t, amiben a ListView-m van és ezt beállítom visszatérési értéknek.
Ezután az onActivityCreated-ben tudom beállítani az előzőleg elkért header referencia alapján a headert, majd beállítani az adaptert.
Elindítom az alkalmazást és minden szép és jó, egészen addig amíg el nem kezdek navigálni.Az alkalmazásomban három darab fragment van egymás mellett egy ViewPager-ben.
Az első fragment a szóban forgó ListFragment, a másik kettő egyelőre sima Fragment.Ha elnavigálok a második fragmentre, majd vissza, akkor még minden oké.
Viszont ha elnavigálok a harmadik fragmentre, majd vissza az elsőre, akkor újra meghívja az onCreateView és onActivityCreated metódusokat és ekkor elszáll hibával.
Plusz ugyan ez van forgatásnál is.Találtam is erről egy StackOverflow bejegyzést.
-
lordjancso
senior tag
Viszont lenne még egy valamilyen szinten ehhez kapcsolódó kérdésem.
Azt meg lehet oldani, hogy a ListView-m első eleme egy kép legyen? Pontosabban egy LinearLayout. Valahogy így nézne ki:<LinearLayout
android:layout_width="match_parent"
android:layout_height="130dp"
android:background="@drawable/fragment_header"
android:gravity="bottom"
android:orientation="vertical" >
</LinearLayout>A ListView többi elemét az adapterén keresztül töltöm fel (azok ugye normális listaelemek, kattinthatóak, stb).
-
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" -
lordjancso
senior tag
Üdv!
Azt szeretném valahogy megoldani, hogy egy ListFragment-em View-ja egy saját xml fájlból legyen elkészítve.
Úgy értelmezem, hogy a ListFragment-nek alapból van egy ListView-ja. Na én ezt szeretném felülírni a saját ListView-mmal, pontosabban az egész ListFragment view-ját, mivel az én xml-emben a ListView-n kívül még van pár egyéb elem, amint szintén szeretnék megjeleníteni!
Próbálkoztam felülírni a ListFragment onCreateView metódusát és ott inflatelni az én xml fájlomat, de az alábbi hibaüzenetet kaptam futtatáskor:
java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
Előre is köszi a segítséget! -
lordjancso
senior tag
Az a baj, hogy nem egészen látom ennek a rajzolásnak a működését, tehát eléggé sötétben tapogatózom és már kezdem elveszteni a fonalat, hogy mier is gondolsz pontosan.

Az UrlDrawable osztályban felüldefiniáltam a setBounds metódust, de nem tudom, hogy az osztály drawable változójával mit kezdjek a setBounds-on belül.
Annyit sejtek erről a setBounds-ról, hogy a 4 int paraméteréről, hogy az első kettő a kép bal felső sarkának x és y koordinátáit adja meg, a második kettő pedig a jobb alsó pont x és y koordinátáit.Alapvetően az UrlImageParser osztályban az onPostExecute-ban történik átméretezés, mert a result.getIntrinsicWidth() és a result.getIntrinsicHeight() kisebb számoakt adnak vissza, mint a kép eredeti mérete, csak nem eléggé kicsinyíti le.
Azt nem tudom, hogy mi alapján kicsinyít? Egy 1024x768-as képből 680-valamennyi széles képet csinált (magasság aránytartóan ehhez megfelelőnek 500 valamennyi), viszont a kijelzőm 600x800-as méretű, így a képből egy kis rész kilóg. -
lordjancso
senior tag
Megpróbáltam a setBounds-ban úgy beállítani, ahogy szeretném, de nem jártam sikerrel.
Egy jóval nagyobb képet használtam, mint a kijelzőm mérete.
A setBounds-ot így állítottam be: urlDrawable.setBounds(0, 0, 100, 100);
Ebben az esetben a képnek 100x100-asnak kellene lennie. A Drawable object mérete valóban 100x100 méretű, viszont a képet átméretezés nélkül rakja bele, így a kép kilóg a konténerből.
Remélem érthetően fogalmaztam.
Hogyan tudnám ténylegesen a képet méretezni? -
lordjancso
senior tag
És még egy kérdésem lenne, mert erre sem találok semmi értelmes megoldást...
Hogyan tudnám az így megjelenő képek szélességét százalékos formában megadni? Az a baj, hogy így a kép különböző méretű kijelzőkön különböző méretben jelenik meg.
ImageView-nál meg lehet adni százalékos méretezést, de ugye most egy TextView-ban vagyunk. -
lordjancso
senior tag
SIkerült megoldani ezzel a megoldással, a kép már letöltődik, viszont rácsúszik a szövegre.
Úgy viselkedik, mintha nem tudná értelmezni a szélesség-magasság paramétereit a képnek.
Pedig a bekeztések külön paragrafusban vannak (<p></p> tag a html-ben) és a kép és igy külön bekezdés..
Erre nincs véletlenül valami ötleted?Egyébként ez lenne a legjobb módszer html tartalom megjelenítésére az alkalmazásban, vagy használjak WebView-t? Úgy tudom 2.x androidon nem lehet átlátszóra állítani a WebView-t és az problémás lehet a számomra. Plusz úgy gondolom, a betűméret, betűtípus sem lenne tökéletesen megegyező a WebView-ban és az alkalmazás többi részén.

-
lordjancso
senior tag
Üdv!
Hogyan tudnám megoldani, hogy adatbázisból jövő html szöveget egy TextView-ban megjelenítek úgy, hogy a képek is megjelenjenek? A sima html szöveg nagyon jól megjelenik a Html.fromHtml metóduson keresztül, de a képek helyén csak egy kékes kis négyzetet látok.
A képeim természetesen abszolút hivatkozások, tehát:
<img src="http://domain.hu/my_image.jpg" /> -
lordjancso
senior tag
Újabb kérdéssel állnék elő!

Csináltam egy async kérést, feldolgoztam a választ egy ArrayList-be, majd ezt az ArrayListet állítom be egy adapternek, amit a ListActivity-m adaptereként szeretnék használni, hogy feltöltsek az eredménnyel egy ListView-t.A ListActivity-m onCreate metódusában ha kézzel töltöm fel az adaptert, tökéletesen működik:
ArrayList<Article> articles = new ArrayList<Article>();
articles.add(new Article(1, "Első", "Leírás1", "Tartalom1"));
articles.add(new Article(2, "Második", "Leírás2", "Tartalom2"));
articles.add(new Article(3, "Harmadik", "Leírás3", "Tartalom3"));
ArticleAdapter adapter = new ArticleAdapter(this, articles);
setListAdapter(adapter);Ha az async kérés eredményét szeretném feldolgozni, akkor NullPointerException-nel elszáll az egész.
public void onArticleSuccess(List<Article> aResult) {
adapter.setItemList(aResult);
adapter.notifyDataSetChanged();
}Az adapter.setItemList(aResult); sornál hal meg az egész.
Az adapterem így van deklarálva az osztály elején:
private ArticleAdapter adapter;Valami ötletetek van erre a dologra?

Előre is köszönöm! -
lordjancso
senior tag
Tegnap még késő este állítgattam rajta, és azt vettem észre, hogy egyik pillanatról a másikra működik.
Nem tudom, hogy melyik módosítás lehetett a titok nyitja, lehet hogy a getCount(), mert kezdetben 0-t adott vissza, de aztán megcsináltam. Lehetséges, hogy ez volt a hiba.
Viszont amikor sikerült, annyira örültem neki, hogy rögtön elmentem aludni.
Most mindjárt kipróbálom, hogy a getCount() visszatérési értékét 0-ra állítom. -
lordjancso
senior tag
Sziasztok!
Egy alkalmazásomban ezt a PagerSlidingTabStrip komponenst használom a menük és annak tartalmának megjelenítésére.
3 menüpontom van, ugye mindhárom egy-egy fragment amik egy ViewPager-ben helyezkednek el.
A MainActivity-m onCreate metódusában megkeresem az xml-ben lévő ViewPager-t, hozzárendelem a tabokat, minden oké, a menüm tökéletesen működik.
A probléma ott kezdődik, hogy az egyik menüpontom tartalma (tehát a ViewPager-ben lévő Fragment tartalma) egy ListView lenne.
Az adott fragmentemmel extendelem a ListFragmentet, onStart metódusában csinálok egy ArrayListet, amit feltöltötök a menüpontokkal, majd példányosítom a menüadapteremet, aminek átadom ezt az ArrayListet és a végén meghívom a setListAdapter(adapter) függvényt, így átadva a feltöltött adapteremet.
A problémám az, hogy csak várom a csodát, de egy tök üres fragment jelenik meg az orrom előtt...
Nem tudna valaki tippet adni, hogy mi felett siklottam el?
Remélem elég infót adtam, hogy tudjatok segíteni!
Előre is köszönöm!Szerk: Valószínűleg azt nem tudom, hogy tegyem rá a ListView-t a layoutra...
Új hozzászólás Aktív témák
- Keychron K4 vezeték nélküli mechanikus billentyűzet
- 2 DB HYPERX 16GB FURY DDR4 2666MHz CL16 HX426C16FB/16
- Alaplap ASUS ROG STRIX B850-I GAMING WIFI, Fractal Design ház, NOCTUA NH-D9L chromax black hűtő, Cor
- Új, bontatlan / felbontott / Kingston, Corsair, G. Skill, Crucial / DDR5 ramok / gari!
- NVIDIA RTX 3080 Ti Founders Edition
- Azonnali készpénzes nVidia RTX 5000 sorozat videokártya felvásárlás személyesen / csomagküldéssel
- BESZÁMÍTÁS! SAPPHIRE B650M R7 8700F 32GB DDR5 512GB SSD RX 6800XT 16GB Zalman Z1 GIGABYTE 750W
- AKCIÓ! Apple Studio Display 27 5K Nanotexturált üveg monitor garanciával hibátlan működéssel
- Lenovo T450s notebookok - 14", i5-i7, 4-12GB RAM, eu vil.bill, számla, gar
- iPhone 13 mini 128GB Green -1 ÉV GARANCIA -Kártyafüggetlen, MS3897
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest





