Cursor c= db.rawQuery(viewFizetes,null);
Itt a viewFizetes-ben mi van? Mert ha pl "SELECT FizetesHonap, FizetesOsszeg, FizetesEgyenleg FROM FizetesTable" akkor kb működnie kéne a cursornak.
Cursor c= db.rawQuery(viewFizetes,null);
Itt a viewFizetes-ben mi van? Mert ha pl "SELECT FizetesHonap, FizetesOsszeg, FizetesEgyenleg FROM FizetesTable" akkor kb működnie kéne a cursornak.
Nem értek az SQLite-hoz, de nem így lenne helyes?
db.execSQL("CREATE VIEW viewFizetes AS SELECT FizetesHonap, FizetesOsszeg,FizetesEgyenleg FROM FizetesTable");
Esetleg segítene a hibaüzenet is.
=Kilroy was here============================ooO=*(_)*=Ooo=======
Én igazából nem értem, hogy mire kell neki ez a view...
igazából csak szenvedek ezzel az sqlite résszel, ha esetleg valakinek van egy király ötlete arra hogy kinyerjem az adatokat és még ki is tudjam íratni segítsen.... sehogy se tudom összehozni
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
Hát ebben a példaprojectben valszeg megtalálod amit szeretnél.
Ps.: A view-nak meg semmi köze nincs a megjelenítéshez. Az egy amolyan virtuális tábla lesz az adatbázison belül, ami egy select alapján van összerakva. Általában olyankor szokás csinálni ha több táblából összeszedett adatok kellenek és gyakran, de még akkor is ritkán elvileg, mert eléggé költséges a fenntartása.
[ Szerkesztve ]
Muszáj view-t csinálnod? Miért nem jó a sima select?
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
Már letettem a Viewről, bár később 3 táblát kellesz összekapcsolni azért gondoltam rá... de am selectel se jó... nem talál olyan rekordot hogy "_id", azóta nem is foglalkoztam vele igazából nem tudom mi lehet a baja.
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
Hogy néz ki (pontosan) a tábla, és mi a konkrét select?
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
inkább bemásolok mindent ami fontos lehet, de az igazság hogy totál összegányoltam az egészet a múltkor és most már alig látom át Hétvégén lesz kicsi időm kicsit összekaparom a dolgokat. Bocsi hogy a topicot is szétgányolom, de hátha hétvégéig valaki tud valami jót mondani Ha van benne valami extra nagy hülyeség (amit nem kétlek), ne szóljatok le nagyon, vegyétek figyelembe hogy még csak most tanulom dolgot, és szép szóból is tanulok
DatabaseHelper
//adatbázis
static final String dbNAME = "fizetes.db";
static final int dbVersion = 1;
//fizetés tábla
static final String FizetesTable = "Fizetes";
static final String FizetesID = "FizID";
static final String FizetesOsszeg = "FizOszzeg";
static final String FizetesEgyenleg = "FizEgyenleg";
static final String FizetesHonap = "FizHonap";
public static final String CREATE_FIZETES = "CREATE TABLE "+ FizetesTable +"("+
FizetesID +" INTEGER PRIMARY KEY AUTOINCREMENT,"+
FizetesOsszeg +" INTEGER,"+
FizetesEgyenleg +" INTEGER,"+
FizetesHonap +" TEXT);";
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(CREATE_FIZETES);
}
public Cursor getAllFizetes(){
SQLiteDatabase db=this.getWritableDatabase();
//Cursor c= db.rawQuery("Select "+FizetesHonap+", "+FizetesOsszeg+", "+FizetesEgyenleg+" from "+FizetesTable, new String [] {});
Cursor c= db.rawQuery("SELECT * FROM "+ FizetesTable, new String [] {});
return c;
}
ViewFizetes
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.viewfizetes);
grid = (GridView) findViewById(R.id.grid);
txtTest = (TextView) findViewById(R.id.txtTest);
spinViewHonap = (Spinner) findViewById(R.id.spinViewHonap);
final String[] honap = new String[] {"Január", "Február", "Március", "Április", "Május",
"Június", "Július","Augusztus", "Szeptember", "Október", "November", "December"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, honap);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinViewHonap.setAdapter(adapter);
try{
spinViewHonap.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id) {
LoadGrid();
}
public void onNothingSelected(AdapterView<?> arg0) {
///////////
}
});
}catch(Exception ex){
txtTest.setText(ex.toString());
}
try{
grid.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View v, int position, long id){
try{
SQLiteCursor cr = (SQLiteCursor)parent.getItemAtPosition(position);
String honap = cr.getString(cr.getColumnIndex(DatabaseHelper.FizetesHonap));
int fizetes = cr.getInt(cr.getColumnIndex(DatabaseHelper.FizetesOsszeg));
int egyenleg = cr.getInt(cr.getColumnIndex(DatabaseHelper.FizetesEgyenleg));
Fizetes fiz = new Fizetes(fizetes, egyenleg, honap);
AlertDialog diag= Alert.ShowEditDialog(ViewFizetes.this,fiz);
diag.setOnDismissListener(new OnDismissListener() {
public void onDismiss(DialogInterface dialog) {
// TODO Auto-generated method stub
txtTest.setText("dismissed");
//((SimpleCursorAdapter)grid.getAdapter()).notifyDataSetChanged();
LoadGrid();}
});
diag.show();
}catch(Exception ex){
Alert.CatchError(ViewFizetes.this, ex.toString());
}
}});
}catch(Exception ex){
Alert.CatchError(ViewFizetes.this, ex.toString());
}
}
public void LoadGrid(){
dbHelper = new DatabaseHelper(this);
try
{
Cursor c = dbHelper.getAllFizetes();
startManagingCursor(c);
String[] from = new String[] {DatabaseHelper.FizetesHonap};
int[] to = new int[] {R.id.textHonapNev};
SimpleCursorAdapter sca = new SimpleCursorAdapter(this,R.layout.rowfizetes,c,from,to);
grid.setAdapter(sca);
}
catch(Exception ex){
AlertDialog.Builder b=new AlertDialog.Builder(this);
b.setMessage(ex.toString());
b.show();
}
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
(#110) SektorFlop válasza SektorFlop (#109) üzenetére
ma volt egy kis időm, gondolom senkinek nem volt kedve vagy ideje átnézni azt a sok mindent amit írtam. Én kénytelen voltam, összerakni az egészet, most már megoldódott a problémám, a lekérdezés működik a tábla tartalma is megjelenik.
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
Hello!
Igényes UI-t mivel érdemes csinálni? Így néz ki az appom mainactivity-je.
Arra gondoltam, hogy egy full screen backgroundot valahogy összeeffektezek alacsony kontraszttal (hogy látsszon is valami a textviewokból), aztán a logó is azon lesz és úgy azért igényesebb lenne mint ez...
Mit ajánlotok ilyen drawable szerkesztésére? Nincs valami nagy gyakorlatom photoshopban...
én is épp ott járok hogy fel kellene dobni az alkalmazásom hangulatát valami ütős dizájnal... tabokat használok az appomba, és ahoz a képeket ps-be hozom össze... am neten keres rám épp mit is akarsz, nagyon sok jó ötlet van, amit felhasználhatsz vagy akár átalakíthatod...
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
Hi,
1 kérdésem volna, Droidspecifikusnak tűnik
JAVA fejlesztői ismeretem van némi, gondoltam írok egy egyszerű android appot (tudom máshogy is meglehetne oldani egyszerűbben).
Lényege:
- Egy edittext tartalmát módosítja a JAVA kód
- start gomb
- stop gomb
Start gomb hatására egy szál tulajdonságokkal rendelkező osztályt indítok ami 10ms-ként módosítaná az edittext tartalmát, létrehozva egy kvázi stoppert.
A szál működik.
Amikor az edittext tartalmát annak setText() metódusával módosítaná a szál (minden 10.ms-ban) fatális tévedéssel elhal a program.
Ha a szál csak számlálgat magában és egy onclick eseményre frissítem be az edittext szövegét akkor az frissíti az edittext tartalmát hiba nélkül.
5let?
-- end of transmission --
Meg kéne nézni, milyen exceptionnel hal meg. Vagy semmit se dob? :S
Ez szerintem az a hiba lesz, hogy a felület egy elemét csak a fő threadből lehet piszkálni. Tehát egy háttérszállal nem lehet hívni a setText-et.
Egyik jó megoldás, ha így hívod a setText-et:
mEditText.post(new Runnable() {
@Override
public void run() {
mEditText.setText("Valami");
}
});
Ekkor nem a szálból fogod hívni a setText()-et, hanem a fő szálban.
Bővebb infó: [link]
Sianis
Üdv!
Van amúgy ilyen jellegű irományokra igény?
Nem titok, hogy immár 2 hónapja 8 órában Andorid fejlesztőként ügyködök és találkoztam pár érdekességgel, ami talán többeknek is hasznos lehet. Azt meg gondolom nem bánjátok, ha nem angolul kell olvasni, bár tudom, hogy nem nem okoz különösebb gondot.
Sianis
Van, van.
Ne fogd vissza magad.
Építs kötélhidat - https://u3d.as/3078
Jöhet
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
Köszönjük szépen. Én is jegyzetelek néha miközbe tanulom... majd én is dobok egy két iromanyt.
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
Lehet, hogy sokan ismeritek már, de fejlesztéshez szerintem nagyon hasznos, nem kell keresgélni a kábelt:
ROOT kell neki.
Használat:
Elindítod, megnyomod a bogarat majd utána pc-n adb connect ipcím és lehet wifin debuggolni / fordítani.
én még nem találkoztam vele, köszi szépen hasznomra lesz nagyon
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
Hello!
felraktam a javat, eclipset, ask-t, adt-t és a create>>new>projects>>other>>android-ban nincs android project csak android application project. ez a kettő ugyanaz vagy teljesen más?
Muton#2316 - $z@r a drop >_<
Ugyanaz.
Sianis
thx!
Muton#2316 - $z@r a drop >_<
Hello!
megcsináltam az első alkalmazásomat, ezt, és az a baj, hogy virtuális telefonon simán lefut, egy galaxy minin meg nem. Mindig az írja ki, hogy "Put Stuff in Me", azaz a script (a linken lévő index.html-ben) mintha nem futna le vagy nem érne véget.
lenne valakinek ötlete, hogy hogy tudnám a valós telón is eredményesen futtatni?
Muton#2316 - $z@r a drop >_<
az mit tud? még nem is hallottam róla
[ Szerkesztve ]
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
Új verzió, az indigo utódja
lenne egy-két apró kérdésem.
1) van egy olyan problémám hogy a visszalépéshez finish()-t használok, de ha vagy megnyomom a mégse gombot, vagy a vissza gombot bejön ismét ugyan az a kép és utána megint kell nyomni egy visszagombot.
2) úgy nevezett rowview-et használok az adatbázisról való kilistázásnál, hogy tudok hozzáfűzni az adatokhoz még szöveget?
3) ugyan ez a rowview-es téma, adatbázisról lekérek egy táblát, esettől függően az egyik sornak pirosnak másiknak zöldnek kellene lennie. sajnos elképzelésem sincs hogy fussak neki ennek a dolognak. adatbázisba ezt már tárolom azzal nincs gond, csak a sor szinezését nem tudom hogy oldjam meg hogy azt a sort színezze
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
1) Nem lehet, hogy az Activity-t kétszer indítod el és ezért kétszer lesz benne a back stackben?
2) Ennek a view-nak van valami layout (tehát XML) alapja? Mert akkor abba kell felvenni vagy még további TextView-kat vagy a meglévőket kell lekérni id alapján a findViewById metódussal és akkor tudsz még hozzáfűzni adatot.
3) Gondolom ListView-be kerül ez a dolog. Sor alatt most a lista egy-egy sorát értjük? Mert ilyenkor az adater getview metódusában meg tudod adni, hogy a view háttere milyen színű legyen. Kód nélkül nehéz így a megfejtést megmondani neked.
Illetve ha a kérdésekre válaszolsz akkor tudok még pontosítani.
Sianis
mert be kell kapcsolni a telefonon a wi-fit, és akkor menni fog
Muton#2316 - $z@r a drop >_<
OMG!
Sianis
1) egy példa az új activity megnyitására:
Intent addIntent = new Intent(this, AddFizetes.class);
startActivity(addIntent);
2-3) az activityhez tartozó xml-ben van egy GridView, és az adapter pedig egy másik xml fájlba állítja be a sorokat.
Cursor c = dbHelper.getKoltseg();
startManagingCursor(c);
String [] from=new String []{DatabaseHelper.TerhelesNev,DatabaseHelper.TerhelesOsszeg,DatabaseHelper.TerhelesDatum};
int [] to = new int [] {R.id.tvLeiras,R.id.tvKoltseg,R.id.tvDatum};
SimpleCursorAdapter sca = new SimpleCursorAdapter(this,R.layout.rowkoltseg,c,from,to);
grid.setAdapter(sca);
nem tudom hogy itt hol kellene hozzá fűznöm a dolgokat, vagy lehet nem így kellene akkor csinálnom?
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
Szia!
1) Ez teljesen jó. Meg kellene nézni, hogy valahogyan nem hívod-e, hívódik-e meg kétszer.
2-3) Ez is jó, csak nincs benne a logika amivel beállítanád a háttér színét. Én a SimpleCursorAdapter-t örököltetném és a getView metódusát még megfejelném egy kicsit, valahogy így:
public class MySimpleCursorAdapter extends SimpleCursorAdapter {
public MySimpleCursorAdapter(Context context, int layout, Cursor c, String[] from,
int[] to, int flags) {
super(context, layout, c, from, to, flags);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
if (position % 2 == 0) {
view.setBackgroundColor(Color.RED);
} else {
view.setBackgroundColor(Color.GREEN);
}
return view;
}
}
Ezután pedig adapternek ezt adnám meg. Nem próbáltam ki, de szerintem így jó. Szólj ha nem!
Sianis
Köszi most már előrébb vagyok, felváltva piros és zöld tökéletes amit írtál, csak ezt a getView-et nem igazán értem még mindig, hogy a feltételbe nem azt szeretném megadni hogy minden második legyen piros, hanem adatbázison van "1" olyan oszlopom hogy állapot, és ha az állapot egy akkor legyen piros, ha az állapot "0" akkor legyen zöld. De nem tudom úgy összehozni hogy a position helyet az állapotott ellenőrizzem.
[ Szerkesztve ]
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
Az állapotot meg valahogyan az adapternek megadott elemekből kellene kinyerned? Az adapternek van egy ilyen metódusa: getItem, amivel egy adott pozícióban lévő objektumot kapsz meg.
Ha jól látom a kódodból, akkor ez valahol a háttérben egy List-et rak össze amiben Map elemek vannak. a getItem elvileg egy ilyen Map-et fog neked visszaadni, de nem 100%, viszont ezt Java Debuggerrel könnyen kiderítheted vagy akár az Androidos loggerrel is.
Ebben az elemben ha minden elemed benne lesz ami a db adott rekordjában benne van, ebből már tudni fogod a státuszt és tudod állítani a háttér színét.
Jó így?
Sianis
Én már csináltam ilyet. A position paraméter alapján behozod az aktuális adatot, amivel a getView éppen foglalkozik, majd ezután ezt az adatot építed be a feltételbe, nem magát a position-t.
Ha pl. egy kétdimenziós tömb 1. oszlopát jeleníted meg, akkor valahogy így kell ennek kinézni:
mydata=tomb.get(position).get(0);
if (mydata==1) ...
A relációs adatbázis mutat némi hasonlóságot a 2 dimenziós tömbbel, ezért hoztam ezt a példát, de a dolgot konkretizálni majd Neked kell. Ha szűrés van az adatbázison, akkor a helyzet persze bonyolultabb.
Mind2 variációt nézem, de nem áll össze a kép.
egyenlőre így állok:
public class MySimpleCursorAdapter extends SimpleCursorAdapter {
public MySimpleCursorAdapter(Context context, int layout, Cursor c, String[] from,
int[] to) {
super(context, layout, c, from, to);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
allapot = ????????????????;
if (allapot == 1) {
view.setBackgroundColor(Color.RED);
} else {
view.setBackgroundColor(Color.GREEN);
}
return view;
}
}
Az adapter bemenő paraméterek egyike se tartalmazza a vizsgálni kívánt elemet, ha csak a Cursor-ban nincs benne, mert az egy szimpla select-et add vissza (ha nem mondok hülyeséget). Abból nem tudom valahogy kinyerni az állapot státuszát?
Vagy az adapter egyik bemenő paraméterébe pl. a "from"-ba rakjam be az állapotot is? Most jönnek elő a hiányosságaim Itt most teljesen elakadtam...
[ Szerkesztve ]
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
A SimpleAdapter a következő módon működik.
Adott egy List, ebben vannak a ListView sorai gyakorlatilag. A List Map-eket tartalmaz, ami általában String kulccsal, String értékeket tárol. Amikor te megadod a String tömböt az adapternek:
String [] from=new String []{DatabaseHelper.TerhelesNev,DatabaseHelper.TerhelesOsszeg,DatabaseHelper.TerhelesDatum};
akkor azt mondod, hogy az ilyen String kulcsokkal elérhető elemeket vegye ki a List adott elemének Map-jéből, majd ezeket az érkeket a másik tömbben magadott id-val megtalálható TextViewkba állítsa be:
int [] to = new int [] {R.id.tvLeiras,R.id.tvKoltseg,R.id.tvDatum};
Ezt mit ad visza a LogCat-ben?
Log.d("Item class:", sca.getItem(position).getClass().getName())
Sianis
Nos, én a fő-fő osztályomban definiált, és gyakorlatilag az egész (nem túl nagy) programomban globálisan (belülről) elérhető tömbökben tároltam az adatokat, így a getView-ban is elérhető volt, nem paraméterből jött be neki. Én egy gridView alá "toltam be" ezt a tömböt, amelyet bizonyos metódusok írtak, bizonyos metódusok olvastak, a grid frissítése meg volt oldva, illetve hát ugye a getView pontosan ezt végezte a módosítások után. Tehát a getView futásakor az adatok már aktuálisak voltak, és mivel "globálisak", ezért lekérdezhetők, felhasználhatók feltételek megfogalmazásához. Szerintem egy kurzort is lehet így használni, de ezt csak gondolom, nem tudom. Lehet hogy kifogásolható a módszerem, de nekem bevált és tetszik, nem látom a hátrányát.
Az említett másik módszer is biztosan járható, én magamnak ezt találtam ki erre a problémára.
LogCat-be nem írt semmit, de valószínű már én csináltam valamit rosszul, totál összekutyultam az egészet a végére. De nem hagyom annyiba a dolgot.
Mindenesetre köszönöm a segítséget! Sajnos most már nem lesz időm csak a hétvégén, akkor újult erővel nekivágok ismét!
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
milyen adatbázis kezelőt ajánlotok androidra?
Muton#2316 - $z@r a drop >_<
hát én nem használok semmit, csak felraktam SQLite Browser-t az eclipse-hez.
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
Ha fejlesztői szempontból akarjuk nézni akkor én a ormlite. Nagyon sokat tud és ha kellően bonyolult az adatbázis akkor ez életmentő lehet.
Sianis
köszönöm a válaszokat, megnézem majd őket!
Muton#2316 - $z@r a drop >_<
Ezt ajánlom mindenkinek megtekintésre, van angol felirat is. Olyan dolgokat mondanak benne ami egyrészt újdonság, másrészt óriási királyság, ráadásul nagy részét támogatja a support lib is tehát nem csak ICS-től használható.
Sianis
Sziasztok, tudnátok ajánlani könyvet/könyveket, amikből meg lehet tanulni az android fejlesztést az alapoktól? Annyiféle van, hogy nem tudok választani...