Beiträge von VomDorf

    OK, danke ... werde das mal anschauen ...

    Du kompilerst für Android 13 API 33.

    targetSdk 33


    mein Handy hat Android 11, mein Sohn hat 13 - läuft auf beiden Geräten.


    Da wir die APP veröffentlichen wollen muss ich mich wohl damit beschäftigen :(


    Das was ich bis jetzt aber immer noch nicht weiß, wieso ist die bitmap nach dem byte convert immer 0 ?

    Da die APP mit dem Gallery-Zugriff läuft, ist mir das noch egal.

    Hallo,


    meine Fotos landen aber alle in der Gallery, ich dachte durch dieses Environment ?

    Hier der Ausschnitt vom build.gradle und manifest


    Hallo,


    Fotos kann ich über meine APP erstellen, lege diese in der Gallery ab, erstelle die byte[] Variante und speichere in eine SQLite-Tabelle.


    Leider habe ich aber Probleme diese Fotos später wieder zu laden.

    In der Tabelle stehen der Dateiname und die Byte-Form des Bildes (BLOB). Leider gelingt mir nicht die Anzeige aus der Datenbank.

    Das erstellte Bitmap ist stets leer bzw. 0.

    Irgendwas fehlt oder mache ich falsch. Kann jemand helfen ?


    Der Inhalt von "image" (BLOB) sieht dann z.B. so aus : [B@8180772

    Das Auslesen geschieht wie folgt:

    Code
    sSQL = "SELECT image FROM photo_table WHERE _id = "+picID+" ;";
    Cursor c1 = myDB.doSQL(sSQL);
    c1.moveToFirst();
    
    bild = c1.getBlob(0);  // das bild als byte Array
    bitmap = BitmapFactory.decodeByteArray(bild,0, bild.length);  // ergibt ein leeres Bitmap  ???
    .....
    // in der Recyclerview nach Übergabe der bitmap
      holder.bmp_image.setImageBitmap(dataModell_TaskList.get(position).getBMPFoto());



    Hallo,


    ich erstelle aus meinen Daten, die ich über die RecyclerView darstelle, parallel ein PDF-Dokument mit der Klasse "PDFdocument". Alles klappt wunderbar.

    Leider überschreitet jetzt die Datenmenge eine PDF-Seite. Mein Wunsch ist klar. Wie kann ich die Seite erweitern ? Natürlich kann ich nachdem ich die erste Seite beendet habe vom Prinzip her eine zweite Seite bilden und die mit Daten füllen.

    Mein Problem ist aber, daß ich den Seitenüberlauf erst in einer Schleife feststelle, in der ich die erste Seite gefüllt habe. Ich zeige Euch folgend meinen Code und lasse gewisse Anweisungen weg, die die variable Arbeit bei der Pixeldarstellung realisieren.

    Es werden die Daten der RecyclerView in einer Schleife an den ViewAdapter übergeben. Parallel werden sie in das PDF-Dokument gespeichert. Der PDF-Aufbau wird über Canvas für jede Zeile realisert.

    Innerhalb der Schleife stelle ich fest, dass eine PDF-Seite nicht ausreicht. Wie kann ich jetzt eine zweite Seite aktivieren ? Android Studio sagt mir, bevor ich eine neue Seite aufbaue, muss die erste beendet werden. Wie Ihr in der Befehlfolge sehen könnt, habe ich versucht je nach Zeilenanzahl in canvas oder canvas2 zu speichern. Aber canvas2 wird in der Schleife noch nicht erkannt. Wenn ich canvas2 vor der Schleife definiere muss ich vorher die erste "volle" Seite benden (finish).


    Hat jemand einen Vorschlag , kann man das anders lösen ?


    Die Idee, den zweiten Teil ( ab 35 Zeilen) irgendwie zwischen zu speichern, gefällt mir erst mal nicht, würde aber wahrscheinlich gehen !
    Im Anhang ist die erste PDF Seite.

    Bin nach einiger Zeit selbst zurecht gekommen.

    Habe zuerst immer im Device Explorer geschaut. Das Verzeichnis aus dem Debugger /emulated/0/ war natürlich leer. Habe Standardordner wir documents verwendet und dort waren dann die Dateien. Habe aber vorher auf dem Handy für die APP Lesen und Speichern frei gegeben !

    Habe mir viele Lösungen angesehen und auch getestet.

    Ich habe schon mitbekommen , das u.a. vieles eine Kombination aus Manifest-, build.gradle und Handy-Einstellungen ist.

    Ich weiß jetzt leider nicht nicht welchen Test-Code ich zeigen sollte.


    Gibt es irgendwo eine klare Anweisung, was man in welcher Kombination machen sollte, um ohne Probleme aus der APP-Lösung speichern zu können, intern würde vorerst reichen ?


    Die Beiträge zu SAF , Beitrag SAF: Paper Datenbank auf dem externalStorage zeigen die Löung über permissions , geht alles nur darüber ?


    Danke Wolfgang

    Da ich zwischendurch die APP auf dem Handy deinstallieren mußte, war natürlich auch die Dantenbank weg. Habe ich leider zuerst nicht bemerkt.

    Die DB von Assets wieder zum Device kopieren und alles hat funktioniert ! Bis auf mein nächstes Problem. Siehe neues Thema !

    Zwischenzeitlich konnte ich Electric Eel wirder installieren. Habe mein vorher exportiertes Projekt wieder eingelsen.

    Aber leider stürzt das System schon nach den ersten Befehlen ab. Meinen Sohn übergebe ich auch regelmäßig ein exportiertes Projekt zum testen, er arbeit unter Flamingo, öffnet die Dateien und es läuft.


    Was kann jetzt bei mir anders sein ?

    Hallo,


    um meinem Problem näher zu kommen, daß in SQLite endlich ALTER TABLE ... DELETE funktioniert, dachte ich mir, installiere doch das neueste System.

    Seitdem gehr leider nichts mehr. Es sind die unterschiedlichsten Fehler. Weitere Korrekturversuche stürzten alles noch mehr ins Elend.

    Electric Eel habe ich nicht leider mehr und weiss nicht wo ich es wieder downloaden kann.


    Es kann auch sein, daß mein Projekt irgendwie "verseucht" ( build.gradle usw. ) ist.

    Was muß ich wo alles außer AndroiStudio deinstallieren und löschen, daß ich vollkommen von vorn anfange. Ich möchte gern alles auf dem PC was ANDROID heißt beseitigen und dann neu beginnen.

    AndroidStudio kannte immer noch meine vorherigen Projekte. Wo kann ich eventuell alles nachlesen ?


    Danke Wolfgang




    Eine Gesamt

    Hallo,


    ich möchte gern eine Tabelle in meiner SQLite database so variabel gestalten, das ich Spalten löschen und hinzufügen kann. Hinzufügen klappt schon wunderbar.

    Aber beim Löschen über ALTER TABLE tabelle DROP COLUMN spalte erhalte ich einen Datenbankfehler (syntax error).

    Im DB Browser funktioniert die Anweisung aber.

    Im Netzt finde ich Kommentare, dass bis SQLite Version 3.35 dieser Fehler kommt.

    Wo sehe ich im AndroidStudio welche DB Version ich habe ?

    Wie kann ich nun meine SQLite im Androidstudion updaten , oder hilft es wenn ich AndroidStudio aktualisiere ?


    Danke Wolfgang

    Du könntest doch auch den Focus (int) gleich dem Adapter im Konstruktor mitgeben.


    Du kannst ja dann auch im Adapter auf deine ViewModel zugreifen. In dem du es einfach auch im Konstruktor mit an den Adapter gibst. Und auch im Adapter kannst du dann Veränderungen setzen.


    Richgtig, warum habe ich das nicht gleich gemacht, manchmal oder doch öfter hat man ein Brett vorm Kopf.

    Übergebe jetzt die Focus_ID mit im ViewModell.

    Funktioniert natürlich und ich muss im ViewAdapter nur die ID abgreifen, ohne hier eine Tabelle abzufragen !!


    Danke nono124

    Ja OK, die Formelierung "Focus" iust nicht ganz richtig. Das eigentliche Fokussieren klappt natürlich .

    Das mache ich doch schon über den ClickListener. Natürlich habe ich dort die ID und die Position und kann im Fragment darauf zugreifen, aber nur nach Click.


    Es geht mir um die prinzipielle Markierung der Zeile. Bis jetzt setzt ich den Focus im ViewAdapter. Bei einem Clickevent auch kein Problem. Um prinzipiell zu wissen wo steht der Focus in meinem in der Summe ca. 50 Listen, speichere ich die ID der Zeile in eine Extradatei, die ich dann im Viewadapter auslese.


    Habe bis jetzt keinen Weg gefunden, die Dateiarbeit in der Activitay/Fragment zu machen und dort dann auch den Focus zu setzen ?!

    ich danke Dir ... das mit dem Observer hattest Du mir früher schon mal empfohlen.


    ich beende den Chat hier, da ich ja eigentlich in meiner APP die Verbindung von der Datenbank zur Liste und die damit verbundene Verwaltung der IDs und Positionen gelöst habe. Ich dachte ja nur, ob es eventuell einfacher geht, da auch dem System die ID im ViewAdapter zur Verfügung steht !


    Es geht halt nicht .......


    Der Code ist ne ganze Menge, reicht erst mal der ViewAdapter ?