Beiträge von nono124

    Hallo ich habe mir den Code Von deinem ListView den du selber gesucht hast von Dezember 2022 noch mal angesehen.


    Bleiben wir bei dem Projekt.

    So du willst jetzt zb hier nach verschiedenen Eigenschaften Properties der Model Klasse Filtern.


    Zb nach der letzen Eigenschaft „region“

    So jetzt schau dir mal an was da in der Filter Klasse gemacht wird. Du

    vergleichst den Suchstring mit dem was dir toString zurück gibt. Und was ist das?

    das ist eine Serialization aller Eigenschaften.

    Du willst aber die Filterung nur nach einer Properti nicht nach allen. Also musst du der Filter Klasse erstmal miteilen nach welcher Properti du Filtern willst und dis dann an anbieten, in der Klasse.


    Klar du könnstet auch verschiene Filter klassen Schreiben und je nachdem was du suchst benutzen. Würde ich nicht machen.


    Du musst auch dem User die Auswahl geben nach welcher Properti er Filtern will.

    Du könntest die Auswahl der Klasse im Konstruktor mitgeben, oder du verschlüsselst sie in Suchstring. Das könnest du es in der toString Methode auswerten und mit dem richtigen getter antworten.

    Da ist deine Kreativität gefragt.


    Du könntest es in etwa so machen habe es nicht getestet nur im Editor geschrieben.



    Wenn du es mit Eine DB machst. Kommt ja die Liste aus der DB Abfrage.


    Die Liste Haltestellen könntet du aus dem Cursor den du von der DB Abfrage bekommst bilden.

    Dazu ist es sinnvoll sich erst mal mit Datenbanken und SQL zu beschäftigen wenn du es wirklich mit DB machen willst. Was ich sinnvoller finde.


    Kannst du zumindest die Grundlagen von SQL ?

    Zitat

    nur das ich die Suchanfragen nicht verfeinern kann wie ich es gerne hätte.

    Und da hilft dir die DB mit einer sinnvollen Abfrage bekommst du genau die Liste zurück die du haben willst.

    Das setzt natürlich eine gutes DB Model , Struktur voraus. Es wird nicht immer so sein das in der DB alles in einer Tabelle ist.

    Eine SQL Abfrage muss sich nicht auf nur eine Tabelle beziehen, Thema Joins.

    Das was du aus der abfrage zurückbekommst und in RV anzeigst muss nicht nur in einer DB Tabelle sein.

    Du wist dich sicherlich auch etwas mit SQL und DB-Strukturen beschäftigen müssen.

    Natürlich kannst du in Android auch eine Offline lokale DB erstellen.


    Dad ist ja in Android schon Integriert und zwar die „SQLite“ DB.

    Wie du darauf zugreifst, das kannst direkt machen besser ist den SQLiteOpenHelper zu benutzen.

    Noch sinnvoller ist es Room zu benutzen. Das ist ein Framework API die sich auch gut in das MVVM Pattern einfügt so das du auch später leichter umstellen kannst.

    Das wird von Google auch empfohlen.

    Dies könnte was für dich sein.


    Android Room Databases



    Db offline außerhalb von Android erstellen schwierig da du sie nicht so einfach in dein Handy importieren kannst. Da die DB-Datei die erstellt wird in einen Geschützen Bereich ist in den du ohne Root Rechte nicht rankommst.


    Du könnest die Datei aber in den Assets mitgeben solltest sie aber beim ersten APP Start aus den Assets in den APP Speicher kopieren da auf die Assets nur gelesen werden kann nicht geschrieben.



    Zum Anzeigen würde ich heute nicht mehr das ListView benutzen dafür ist das RecyclerView besser geeignet auf jedenfalls performanter.

    Bei 1200 Einträgen sicherlich.

    Hallo und Willkommen im Forum.


    Wenn du so ein Projekt vor hast sollte auch erst mal etwas Planung erfolgen.

    Lassen wir erst mal die Programmierung der Oberfläche GUI beiseite.


    Du willst ein Datenbank zum Speicher der Daten.

    Was hast du da bis jetzt? An was genau hast du dabei gedacht?


    Ich gehe mal davon aus du bei diesen Projekt nicht an eine Lokal in Handy gehaltne Sqlite DB denkst.

    Sonder etwas Server basierendes. Denn es soll doch bestimmt mehren Usern zugänglich sein und wenn Änderungen kommen solle sie alle sehr Zeitnah bekommen. Vielleicht sollen auch User was ändern dürfen und nicht nur der Admin.

    Da stellt sich schon die erste Frage ein Klassische relationale DB ( MySQL …)

    oder eine NoSQL zb. (Firebase, MongoDB, …)


    Auch der zugriff auf die DB sollte überdacht werden, ein direkter zugriff auf eine mySQL auf dem Server ist aus Datenschutz nicht zu empfehlen.

    Da sollte man überlegen welches Backend API (REST) dafür man benutz.


    Auch ist es erst mal sinnvoll sich Gedanken über die DB Struktur zumachen.

    Ein DB Model entwerfen. Also Entitäten Relationen ....


    Was davon hast du bis jetzt?

    Du könntest mit Hilfe des FragmentManager und

    findFragmentById das geladne Layout prüfen

    oder vergibt dem Fragment ein „TAG“ und prüfst mit findFragmentByTag.


    Bekommst du was zurück wird das Fragment aktiv sein wenn Null zurück kommt wird es Inaktiv sein.

    Das mit dem getItemViewType ist mist und brauchst du in deinem Fall auch nicht.

    Du willst doch alle Felder von deinem layout füllen. Also musst du das auch auf einmal in der

    onBindViewHolder -> bindEntry Methode machen ohne den getItemView…


    Da musst du allen TextView bei einem durchlauf setzen.


    Und der Rückgabewert getItemCount() ist nur die Anzahl einer Liste.

    also wenn in einer Liste 10 sind ist der Wert auch nur 10 und nicht 30

    Zitat

    Ich möchte jeweils den letzten Eintrag der 3 Listen im entry_item_layout ausgeben.

    Wenn du nur den letzten Eintag in der Liste ausgeben willst dann Brauchst du doch gar kein Recyclerview.

    Zitat

    ich möchte gerne in einem Recyclerview Item den letzten Eintrag von jeweils 3 Array Listen ausgeben.

    Das heist für mich du willst die Liste von unten nach oben durch gehen.



    Zitat

    einem Recyclerview Item ausgegeben werden sondern die Einträge verteilt werden auf die nächsten Recyclerviews.


    Du hast nur ein Recyclerview nicht mehrere.

    So wie ich es sehen hasst du alle angaben der drei Listen in einem Item. In deinem Layout R.layout.entry_item_layout sind bestimmt 16 TextViews enthalten. Das Ist dann für das Recycler ein Eintrag eine Pos.



    somit ist auch die Rückgabe der Anzahl der Items falsch „getItemCount()“

    Da reicht die Anzahl einer Liste. wenn in der Liste 10 Einträge sind werden es auch nur 10 Zeilen sein. Auch wenn dein Layout vielleicht 5 Zeilen hat für das Recycler ist es eine Pos.


    zeige mal das Layout



    Wenn ich falsch liege beschreibe dein Problem genauer.

    this@MainActivity?


    Solange du in der Activity Klasse bist kannst du das so benutzen aber außerhalb nicht.




    Code
    fun check(co : Context) : Boolean {
        return (Build.VERSION.SDK_INT < 31 ||
                ContextCompat.checkSelfPermission( co ,Manifest.permission.BLUETOOTH_CONNECT) == PackageManager.PERMISSION_GRANTED)
    }

    return (Build.VERSION.SDK_INT < 31 ||PERMISSION_GRANTED)