Beiträge von matthias

    Hi Leute,


    ich bastel gerade an einer Bildergalerie, die Teil meiner neuen App wird. Dabei zeige ich sowohl lokal gespeicherte als auch online liegende Bilder an. Momentan habe ich das ganze wie folgt aufgebaut:


    Ich erzeuge im Prinzip pro Kategorie eine GridView, in die ich ImageViews lege. Die ImageViews befüttere ich mit Bitmaps, die ich mithilfe der BitmapFactory verkleinere. Wenn man dann auf ein Bild Klickt wird die große Variante davon in einen ViewPager geladen.


    Habe die Aufrufe zum Bilder holen in AsyncTasks ausgelagert sowie die komplette Abarbeitung in einen eigenen Thread, um den Mainthread zu entlasten und der Meldung zu entgehen, der Mainthread würde zu viel tun und verwirft dann ein paar Elemente. Jedoch dauert das ganze zu lange und ist zu ineffizient.


    Wie wäre hier denn an sich der bevorzugte weg, wie geht man bei sowas eigentlich vor? Hab mich glaub in ein Thread und AsyncTask wirrwarr verstrickt, aus dem ich allein gerade nicht mehr heraus finde.



    Mit freundlichen Grüßen,
    matze

    Hoi Leute,


    ich bastel grad an nem neuen Projekt rum und bin auf die GridView gestoßen, die ich irgendwie nicht ganz verstehe.


    Habe mir eine eigene Klasse gebastelt, die von GridView erbt und im Konstruktor eine innere Klasse, die von BaseAdapter erbt dran gesteckt. Die GridView bekommt eine ArrayList mit Bildnamen in Form von Strings, gibt das ganze an den Adapter durch und der bastelt in der getView dann eine ImageView draus.


    Das ganze funktioniert an sich auch recht gut, jedoch will ich ein Grid haben, das 3 Columns und beliebig viele Rows hat. Deshalb habe ich mittels this.setNumColumns(3); die Columns auf 3 beschränkt. Nur werden jetzt insgesamt nur 3 angezeigt und er bricht nicht um.


    Die Beispiele die man so im Netz findet sind etwas unklar, z.B. hier. Das Bild oben lässt in meinen Augen drauf schließen, dass der Code drunter was Mehrzeiliges generiert, ein Grid eben und nicht nur eine einzige Zeile.


    Hat jemand eine Idee bzw. Erklärung, wieso das nicht so klappt wie ich will?


    Hier mein bisheriger Code



    (von der Variable "images" nicht verwirren lassen, die wird noch überdeckt, könnt ich mal Ändern. Um an den Listener zu kommen verränk ich mich auch noch etwas zu sehr, aber das ist jetzt erstmal egal)



    Gruß,
    matze



    UPDATE:


    Ok ... das GridView kann es ganz offensichtlich nicht leiden, wenn es in einem LinearLayout steckt. Mal schaun was sich da machen lässt.


    UPDATE 2:
    Hab das Problem mit folgendem Code umgangen:



    die -40 weil ich drum rum ein Padding hab, das / 3 weil mein Grid drei Spalten hat.


    Irgendwie doof, dass die GridView sich vom LinearLayout so unterbuttern lässt ...

    Hoi,


    dein Problem müsste sich eigentlich mit Services lösen lassen. Die kann man einfach anstoßen und die rödeln im Hintergrund vor sich hin. Dem ist egal wo genau du gerade in deiner App bist. Mittels Handler kann der Service mit Activitys kommunizieren und Messages schicken, auf die du dann von der Activity aus reagieren kannst. Das ganze kann man auch mit einem BroadcastReceiver verknüpfen.


    Allerdings habe ich das ganze noch nie selbst getestet, da ich bisher keinen Anwendungsfall dafür hatte. Aber Lars Vogel hat in seinem Blog ein nettes Tutorial dazu geschrieben -> zum Tutorial.


    Vielleicht hilft dir das ja weiter ;)


    Gruß,
    matze

    Hoi,


    hab selber keine Erfahrung damit aber hab mir gedacht was solls, ich frag mal Google. Das für dich wichtige Stichwort ist wohl "AlarmManager" und es gibt viele Beispiele wie man das Ding benutzt.


    z.B. hier oder da und hier drüben hab ich auch noch was gesehen ;)


    Vielleicht hilfts dir ja weiter.



    Gruß,
    matze

    Hoi,


    haben in ein paar Projekten JavaFX komponenten. Ich bin allerdings der Meinung, dass man sich aktuell nicht darauf verlassen kann. Mit der letzten Version 2.2 wurde im Prinzip alles über den Haufen geworfen und das Ding hat mit 2.1 nichts zu tun, kommt mir zumindest so vor. Es läuft sehr instabil und stürzt unkontrolliert und teils nicht reproduzierbar ab. Auch hat meinem Gefühl nach JavaFX ein Problem mit wenigen Kernen und verabschiedet sich wenn ein Thread eigentlich mal warten sollte.


    Also meine Meinung ist, man sollte JavaFX auf jeden Fall weiter verfolgen, denn wenns mal stabil läuft kann man damit coole sachen machen. Allerdings dauert es noch einige Zeit, bis man so etwas produktiv einsetzen kann.


    Gruß,
    matze

    Hoi,


    na da scheinst du ja ein grundsätzliches Threading- Problemchen zu haben ... weiß grad nicht wo ich da jetzt ansetzen soll. Am trivialsten wärs wohl mal zu testen ob du deine Variablen einfach auf synchronized setzen kannst oder ob du Methoden synchronized setzen kannst.
    Ich meine mich zu erinnern dass FindBugs auch DeadLocks etc. erkennt, zumindest bis zu einem gewissen grad. Falls du also nicht so recht weist wo du jetzt ansetzen sollst, kannst du mal FindBugs drüber rödeln lassen, vll. hat der ja einen passenden Tipp.


    Gruß,
    matze

    Hi,


    joa, einen Error ignorieren ist schon nicht wirklich toll. Aber falls das wirklich ein false positive ist, also ein Bug, kann man nichts tun ausser das ganze mit einem dicken fetten TODO zu versehen und nach updates mal prüfen ob der Fehler in späteren Android Versionen immer noch existiert ...
    Zumindest was der LogCat sagt gibt nicht mehr her als Erklärung.


    Ich gehe mal davon aus du hast deine App schon umfassend debuggt und schritt für schritt nachvollzogen was der da treibt? Vll. auch mal das .sqlite File auf den PC ziehen und mit einem SQLite Programm öffnen und die SQL dort ausführen. Mal schaun was er da sagt. Hab das mal mit nem Firefox Plugin namens SQLite Manager gemacht. Vll. ist ja die Fehlermeldung einfach nur verdammt ungünstig und es scheitert an was ganz anderem ...


    Gruß,
    Matze

    Hi


    googelt man ein wenig behaupten viele das wäre ein false error. Ich denke aber im laufe des Testens hast du mal das Schema verändert, etwas umgestellt, die App neu aufgespielt und er hat aber das alte .sqlite File behalten, das jetzt etwas "korrupt" ist. Versuch mal deinen Cache zu leeren, dann deinstallieren und die App neu aufzuspielen. Dann müsstest du ein schönes, frisches, leeres File haben. Evtl. vorher auch mal in Eclipse(?) ein Project > Clean drüber rödeln lassen.


    Wenns nichts bringt und an sonsten alles funktioniert kann man den error wohl ignorieren.


    Gruß,
    matze

    Hi,


    so spontan würd ich sagen deine aktuelle HashMap musst du dir irgendwo auslagern (MemberVariable o.ä.) .
    Das ganze durch rennen und vergleichen um Duplikate zu vermeiden dürfte wohl aus folgendem Code zu entnehmen sein:


    Um nun die Werte aus deinen TextViews zu aktualisieren würd ich mir evtl. eine zweite HashMap basteln die zu deinem Key einfach das TextView Objekt hält.


    Gruß,
    matze

    Hi,


    ach herje, da hab ich ja einiges überlesen :D ich sollt mir mal nen kaffee holen xD


    lager mal den part in nen eigenen thread aus


    android mags nicht wenn man netz zugriffe im main thread macht, zumindest ab ner etwas späteren version.


    Die ComponentInfo ist von Android selber, hab da den falschen Name copy&pasted ;) meinte die ResultActivity


    Wenns nix bringt mach mal nen Breakpoint (am linken Bildschirmrand des Editors doppelklicken, du benutzt doch Eclipse oder? es erscheint ein blauer Punkt ...) und im Debug Modus starten (ist eins rechts vom Run Button) am besten eh am Anfang des Codes, den ich da von dir kopiert hab und geh mal schritt für schritt durch, vll. ist auch irgendwo was einfach null und die Fehlermeldung ist nur ziemlich doof.



    Gruß,
    Matze

    Hoi,


    also ne direkte Antwort hab ich wohl auch nicht aber vll. kommen wir ja schritt für schritt dem problem auf die spur ;)


    Die Activity ComponentInfo hast du ja in der Manifest eingetragen, oder? Sonst wärs etwas seltsam, dass es am PC geht.


    SearchProvider kenne ich jetzt nicht, google allerdings auch nicht, was genau ist das? Wirft das evtl. per throws eine RuntimeException wenn in deinem keyword irgend was unerwartetes steht? Steht denn überhaupt was drin?


    Kannst du da mal rein debuggen?


    Sollten sich die seltsamen effekte häufen hat sich vll. einfach nur deine klasse R verschluckt und am handy gammelt noch ne alte rum. Hast du mal unter einstellungen apps den cache geleert und das ding komplett deinstalliert vor dem nächsten test?


    Gruß,
    matze

    Hoi,


    sorry, momentan is iwie bisserl stressig ;)
    Glaub nen Update hab ich noch gar nicht mitgekriegt. Habs ja erst kurz vor der Frage installiert :)


    Für deine andere App bin ich wohl leider die falsche Zielgruppe, ich habs nich so mit Social Media und bin nur bei G+, da auch nur so halbherzig ;)


    Gruß,
    matze

    Hi,


    na da hab ich wohl diese Option etwas zu flüchtig gelesen. Ich habe gelesen "Sollte die Hardware-LED nicht funktionieren, wird das Bildschirm-LED benutzt", quasi als Fallback ... ;)
    Jetzt leuchtet auch das Hardware LED so wie es soll :)


    Gruß,
    matze

    Hi,


    du meinst ein Device mit dem Android Emulator oder? Wenn du mal das script "android" anstößt (liegt auch im sdk ordner, glaub unter tools oder platform-tools) kannst du dort unabhängig von eclipse ja ein Device erstellen und starten. Wenn du dann "adb devices" ins terminal tippst müsste das dort auftauchen, wenn du dann in Eclipse auf dein Projekt Run as Android Application machst müsste dort das Gerät aufgelistet sein. Ich hab da nix in udev oder sonst wo eingetragen ...


    Unabhängig davon läuft der Emulator mehr als grottig, zum Testen kann man den sowieso löten finde ich.


    Gruß,
    matze

    Hi,


    ich glaub ich versteh nicht ganz, wie die App funktioniert bzw. was das testen soll. Ich drücke auf LED an -> Blaues LED -> Test, dann fordert er mich auf ich soll mein Display aus machen. Ich drücke die Hardware-Taste und sehe dann einen schwarzen Bildschirm und auf dem Display (nicht Hardware LED) leuchtet ein blauer Kreis. Mein hardware LED kann aber blau leuchten ... grün auch und auch weiß.
    Hab ich da was falsch verstanden?


    Gruß,
    matze

    Hi Niklas,


    willkommen auch von mir ;)


    Ich habe mir damals Android 3 - Apps entwickeln mit dem Android SDK gekauft. Bietet einen netten Überblick über die verschiedenen Möglichkeiten, stößt aber auch recht flott an seine Grenzen (der Bereich Datenbanken ist verbesserungswürdig). Allerdings habe ich davor auch 3 Jahre in meiner Ausbildung Java gelernt und danach 1 Jahr als Java Entwickler gearbeitet. Deshalb ist es für den Einsteiger sicher mal einen Blick im Buchladen wert ;)


    Gruß,
    matze

    Hi,


    hast du dir das Code Sample mal runter geladen?
    Hab mit den Elementen auch noch nichts gemacht, aber ich stelle einfach mal die Vermutung auf, dass du beim Click Event auf das ListView Element via Intent eine neue Activity startest. Der Code in dem Tutorial ist in der Tat etwas wirr .... ich denke aber, dass der Ersteller dieses Schnipsel zum "Tab wechseln" benutzt


    Alternativ, schau mal ob du in der Methode für dein Click Event an dein TabHost ran kommst und versuchs dann mit setCurrentTab(int index) oder setCurrentTabByTag(String tag).


    Gruß,
    matze

    Kann ich irgendwie warten bis der thread dann fertig ist bevor der nächste Code ausgeführt wird ?


    Ich hätt jetzt einfach mal gesagt ruf an Ende deines Threads, wenn der mit seiner Arbeit fertig ist, ne Methode auf in der dann weiter gearbeitet wird. Ist eigentlich am unkompliziertesten.


    Gruß,
    matze