» »

[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:
/*
 * 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.

_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 ?

KernelPanic ::

_Dormage_ je izjavil:

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 ?
Ne vem, kje naj ga definiram. V Adapterju, v mojem database mangerju ali kar v activity-ju?

_Dormage_ ::

Jst bi ga dal v activity kjer boš prikazal zadeve.

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]

KernelPanic ::

_Dormage_ je izjavil:

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]
Ahaaa, dober predlog, enostaven. Hvala!!!! Sedaj v drugem postu cakam na pomoc, nato se spravim programirati, php skripta za zajem podatkov mi ne dela. :D

_Dormage_ ::

Sem se zmotil ker sem hitro pisal, ampak mislim, da sva se razumela.
Vzameš interval med (currentPageIndex *9) in ((currentPageIndex *9) + 9) :))

KernelPanic ::

Ja ja, sem zastekal, kljub vsemu hvala!! Sedaj se zacnem bosti z tem ...

KernelPanic ::

A mogoce kdo ve, samo za primerjavo, kako ima to resen iOS, je ze kaksna integrirana resitev?

_Dormage_ je izjavil:

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…



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Android] Bluetooth aplikacija

Oddelek: Programiranje
5828 (691) marjan_h
»

[Android] Splošno

Oddelek: Programiranje
351802 (932) piki12
»

[Java]OOP Vprasanje glede dedovanja

Oddelek: Programiranje
5803 (673) KernelPanic
»

android črta

Oddelek: Programiranje
412073 (1344) g333kk
»

[Android]GridView vprasanje

Oddelek: Programiranje
12749 (630) KernelPanic

Več podobnih tem