Forum » Programiranje » [Android]Software Design vprasanje
[Android]Software Design vprasanje
KernelPanic ::
Spostovani!
V svoji prvi aplikaciji za android imam razred CDatabaseManager, katerega naloga je vleci (preko klicev php skript na strezniski strani) podatke iz mysql podatkovne baze. V bazo se uspesno prijavim z emailom (uporabniskim imenom) ter geslom, v povratku dobim json objekt z user id, username in userlastname. To sedaj dela brez problemov. Zataknilo se mi je pa pri sledecem problemu: Namrec, v gridview bi rad prikazal elemente, ki so sestavljeni iz iz imena ter slike (prikaz kategorij ponujenih izdelkov). V ta namen sem kreiral razreda CItemMerchandiseCategory, ki predstavlja GUI komponento v gridview-u samem:
Prvo vprasanje:
Omenjena baza ima veliko kategorij artiklov, jaz bi jih rad prikazoval 9 na stran (3x3). Kako naj realiziram loadanje kategorij, ali naj iz baze povlecem v android aplikacijo vse naenkrat in jih nato programsko razdelim na 9 po strani (view-u), ali naj jih prenasam 9 per view (manj internet prometa).
Drugo vprasanje:
Omenjene kategorije (iz prvega vprasanja - 9 po strani) moram nekam shraniti, zato sem naredil ArrayList z CItemMerchandiseCategory (array objektov, instanciranih iz zgornjega razreda). Toda, kam naj ta array list "porinem" - v razred, ki skrbi za bazo (CDatabaseManager), v adapter sam (CItemMerchandiseCategoryAdapter) ali kar v activity, ki jih bo konec koncev tudi prikazal?
Tretje vprasanje:
V zgornjem razredu imam v default constructorju stavek new Bitmap(), ki se noce prevesti. Kako mu dopovem, da bi rad imel pod default konstruktorjem null bitmap ali neko default sliko, povleceno iz resources/drawable-hdpi?
Vnaprej se zahvaljujem za odgovore ter lp,
M.
Lp,
M.
V svoji prvi aplikaciji za android imam razred CDatabaseManager, katerega naloga je vleci (preko klicev php skript na strezniski strani) podatke iz mysql podatkovne baze. V bazo se uspesno prijavim z emailom (uporabniskim imenom) ter geslom, v povratku dobim json objekt z user id, username in userlastname. To sedaj dela brez problemov. Zataknilo se mi je pa pri sledecem problemu: Namrec, v gridview bi rad prikazal elemente, ki so sestavljeni iz iz imena ter slike (prikaz kategorij ponujenih izdelkov). V ta namen sem kreiral razreda CItemMerchandiseCategory, ki predstavlja GUI komponento v gridview-u samem:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package categories; import android.graphics.Bitmap; import android.graphics.BitmapFactory; /** * * @author marko */ public final class CItemMerchandiseCategory { private Bitmap m_oImage; public Bitmap thumbnail() { return this.m_oImage; } private void setThumbnail(final Bitmap b) { this.m_oImage=b; } private void setBitmap(final String path) { this.m_oImage=BitmapFactory.decodeFile(path); } private String m_strText; public String name() { return this.m_strText; } public void setName(final String t) { this.m_strText=t; } public CItemMerchandiseCategory() { this.setThumbnail(new Bitmap()); this.setName(""); } // default constructor public CItemMerchandiseCategory(final Bitmap thumbnail, final String name) { this.setThumbnail(thumbnail); this.setName(name); } // assigment constructor }ter razred CItemMerchandiseCategoryAdapter (extends BaseAdapter), katerega naloga je izris elementov.
Prvo vprasanje:
Omenjena baza ima veliko kategorij artiklov, jaz bi jih rad prikazoval 9 na stran (3x3). Kako naj realiziram loadanje kategorij, ali naj iz baze povlecem v android aplikacijo vse naenkrat in jih nato programsko razdelim na 9 po strani (view-u), ali naj jih prenasam 9 per view (manj internet prometa).
Drugo vprasanje:
Omenjene kategorije (iz prvega vprasanja - 9 po strani) moram nekam shraniti, zato sem naredil ArrayList z CItemMerchandiseCategory (array objektov, instanciranih iz zgornjega razreda). Toda, kam naj ta array list "porinem" - v razred, ki skrbi za bazo (CDatabaseManager), v adapter sam (CItemMerchandiseCategoryAdapter) ali kar v activity, ki jih bo konec koncev tudi prikazal?
Tretje vprasanje:
V zgornjem razredu imam v default constructorju stavek new Bitmap(), ki se noce prevesti. Kako mu dopovem, da bi rad imel pod default konstruktorjem null bitmap ali neko default sliko, povleceno iz resources/drawable-hdpi?
Vnaprej se zahvaljujem za odgovore ter lp,
M.
Lp,
M.
- spremenil: KernelPanic ()
_Dormage_ ::
Vsekakor ne zloadat vsega ker bodo uporabniki na podatkovnih prenosih stradali.
Odvisno spet kolko podatkov je..
Lahko potegneš 18 elementov, 9 jih prikažeš ostalih 9 pa v cache, če bo uporabnik jtel naslednjo stran.
Pri vsakem loadu dodaš novih 9 in zbrišeš starih 9.
V čem točno je problem ArrayLista ?
Odvisno spet kolko podatkov je..
Lahko potegneš 18 elementov, 9 jih prikažeš ostalih 9 pa v cache, če bo uporabnik jtel naslednjo stran.
Pri vsakem loadu dodaš novih 9 in zbrišeš starih 9.
V čem točno je problem ArrayLista ?
KernelPanic ::
Vsekakor ne zloadat vsega ker bodo uporabniki na podatkovnih prenosih stradali.Ne vem, kje naj ga definiram. V Adapterju, v mojem database mangerju ali kar v activity-ju?
Odvisno spet kolko podatkov je..
Lahko potegneš 18 elementov, 9 jih prikažeš ostalih 9 pa v cache, če bo uporabnik jtel naslednjo stran.
Pri vsakem loadu dodaš novih 9 in zbrišeš starih 9.
V čem točno je problem ArrayLista ?
KernelPanic ::
Ja, se strinjam, bom storil tako. Samo se nekaj. Ali ima Android kaki class v svojem APIju, ki skrbi za per-page loading of items, ali moram elemente sam urediti v tabele po 9 elementov (ena dvodimenzionalna tabela, prvi index je page number, drugi index je dejansko stevilka elementa v tem page-u. Bolje bi bilo uporabiti se kaksen map ...)?
_Dormage_ ::
Da bi obstajal kak class za to v android API-ju ne vem.
Pomoje lahko rešiš zelo enostavno.
Mogoče nerabiš niti 2D array, ampak 1D...
Veš, da jih lahko pokažeš 9 na page.
Nardiš en int currentPageIndex kjer držiš index strani, ki jo gledaš.
In iz arraya potegneš elemente v intervalu [currentPageIndex, currentPageIndex+9]
Pomoje lahko rešiš zelo enostavno.
Mogoče nerabiš niti 2D array, ampak 1D...
Veš, da jih lahko pokažeš 9 na page.
Nardiš en int currentPageIndex kjer držiš index strani, ki jo gledaš.
In iz arraya potegneš elemente v intervalu [currentPageIndex, currentPageIndex+9]
KernelPanic ::
Da bi obstajal kak class za to v android API-ju ne vem.Ahaaa, dober predlog, enostaven. Hvala!!!! Sedaj v drugem postu cakam na pomoc, nato se spravim programirati, php skripta za zajem podatkov mi ne dela.
Pomoje lahko rešiš zelo enostavno.
Mogoče nerabiš niti 2D array, ampak 1D...
Veš, da jih lahko pokažeš 9 na page.
Nardiš en int currentPageIndex kjer držiš index strani, ki jo gledaš.
In iz arraya potegneš elemente v intervalu [currentPageIndex, currentPageIndex+9]
_Dormage_ ::
Sem se zmotil ker sem hitro pisal, ampak mislim, da sva se razumela.
Vzameš interval med (currentPageIndex *9) in ((currentPageIndex *9) + 9)
Vzameš interval med (currentPageIndex *9) in ((currentPageIndex *9) + 9)
KernelPanic ::
A mogoce kdo ve, samo za primerjavo, kako ima to resen iOS, je ze kaksna integrirana resitev?
Lp,
M.
Jst bi ga dal v activity kjer boš prikazal zadeve.Hvala za predlog, ampak dal sem ga v DatabaseManager, ki ga deklariram kot private znotraj browser activity-ja in nato do arraya dostopam z getter funkcijo. Ampak, sedaj imam se eno vprasanje: Tale database manager bi rad konstruiral kot singleton, da je samo en objekt za celo aplikacijo v bazi, ali so kaksne restrikcije glede Android OS ali lahko uporabim standard java pristop? Ker nocem, da bi vsak objekt, ki bi "delal" z bazo, instanciral svoj database manager, saj je to potratno? Ali pa se motim ...?
Lp,
M.
Zgodovina sprememb…
- spremenil: KernelPanic ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Android] Bluetooth aplikacijaOddelek: Programiranje | 1101 (964) | marjan_h |
» | [Android] SplošnoOddelek: Programiranje | 2016 (1146) | piki12 |
» | [Java]OOP Vprasanje glede dedovanjaOddelek: Programiranje | 986 (856) | KernelPanic |
» | android črtaOddelek: Programiranje | 2417 (1688) | g333kk |
» | [Android]GridView vprasanjeOddelek: Programiranje | 958 (839) | KernelPanic |