Hilfe beim einbinden von RecyclerView oder LiestView in Fragment

  • Hallo und guten Tag an alle :)

    Da ich normalerweise in VB/C# programmiere, suche ich hier Hilfe, da ich noch sehr unerfahren bin, was Android Programmierung angeht.

    Ich habe mich durch verschiedene Tutorials gewurschtelt, um meine eigene App zu entwickeln, die ich für meine Karaoke Songs benutzen möchte.

    Ich habe meine App mit TabLayout und Fragmente aufgebaut(Titel einsenden(was auch funktioniert),Suche(Soll man aus einer MySQL Datenbank einen Titel suchen können und das Ergebnis angezeigt werden(funktioniert nicht), die Anbindung von PHP zur MySQL besteht bereits.


    Da ich nun jetzt schon einiges an Tutorials und YouTube Videos durch habe und ich es leider nicht ins Fragment eingebunden bekomme, bräuchte ich, wenn jemand so nett wäre etwas Unterstützung um meinen Code fertig zu stellen(via TeamViewer vielleicht, dass ich auch mit sehen kann wie und was nicht gepasst hat um ev. das ganze doch noch etwas mehr zu verstehen.

    Wenn gewünscht auch für ein paar Euros.


    Wäre echt ein feiner Zug, wenn sich dafür jemand bereit erklären würde.

    MFG Bady

  • Was genau geht denn nicht beim zugriff auf das Rest API der MySQL?

    Wie genau hast du es gemacht? Zeige das.


    Beachte das es in Android nicht mehr möglich ist Netzwerkzugriffe im UI Thread zu tätigen.

    Das ging bis Android 3.

    Ein normaler Http Request muss in einen eignen Thread.


    Du kannst dafür auch eine Lib. Benutzen. zB. Volley, OKHttp, …

  • Das senden eines Titels funktioniert ja auch und hab ich in einen Thread gepackt.

    Was nicht funktioniert ist eben das mir das fragment2 meine DatenbankWerte die als Jsonformat ausgegeben werden ausliest.

    Hier meine Dateien.

    Daten werden so ausgegeben von der DB:



    Hier wird mir arraylist.getApplicationContext rot markiert.



    Ich danke dir schon mal für deine Hilfe und Mühen

    LG Bady

  • was soll das mit dem Context ?

    wenn dann brauchst du den Context der Activity das ist nicht getApplicationContext()


    aber das brauchst du garnicht.


    Code
     @Override
        public JsonDataViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.per_row,viewGroup, false);
            return new JsonDataViewHolder(view);
        }



  • Create RecyclerView in Android Fragment
    Android Official Documentation provided a tutorial for creating a RecyclerView in Activity. However, it is a bit different when trying to…
    medium.com

  • Danke nono124


    Ich hab das folgendermaßen nun geändert:


    Ist dass bis hierhin mal richtig?


    Ich habe dann aber dennoch das problem in Zeite 108 weil ich nicht weiß wie ich die arrayList den Adapter zuweisen soll.


    Danke schön.


    Edit:

    Die Layout (per_row.xml) sieht so aus:

  • Hallo wo ist denn dein Problem sollte eigentlich laufen.


    Habe es mal getestet geht.

    Kommen überhaupt daten an?

    Denn Asynctask ist seit Android 11 deprecated. Sollte nicht mehr benutzt werden.


  • Ich hab das doch so gemacht wie du es geschrieben hattest aber es wird mir dennoch arrayList rot unterstrichen.

    Die anderen Fehler hab ich auch umgeschrieben, wie du sagtest.


    Irgendwie kapier ich das jetzt grade nicht.

    Wie kann ich den testen ob überhaupt Daten ankommen?


    Edit:

    Ich hab gerade rausgefunden das es in Android Studio auch nen Debugger und Breakpoints gibt ^^


    Du hast recht. Es kommen keine Daten an!


    in der fragment2.jave im Try catch block fällt er bei

    Code
    httpURLConnection.connect();

    ins Exception.

    java.io.IOException: Cleartext HTTP traffic to meinurl.de not permitted


    Edit2:

    Code
     android:usesCleartextTraffic="true"

    in der AndroidManifest behob das Problem.

    Jetzt kommen auch Daten an!

    Jetzt schmeißt es ihn bei

    Code
    arrayList.add(new JsonDataList(interpret,titel,karafun));
    i++;


    raus.

    org.json.JSONException: Index 4 out of range [0..4)


    Code
    while (i <= parent.length()-1){

    -1 behebt das Problem :)



    Jetzt steh ich wieder vor dem Problem die arrayList in den Adapter ein zu binden:

    Code
    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
    
       JsonAdapter jsonAdapter = new JsonAdapter(arrayList);
       recyclerView.setAdapter(jsonAdapter);
    
    }

    arrayList wird rot markiert.


    'JsonAdapter(java.util.ArrayList<com.example.badmaxapp.JsonDataList>, android.content.Context)' in 'com.example.badmaxapp.JsonAdapter' cannot be applied to '(java.util.ArrayList<com.example.badmaxapp.JsonDataList>)'



    LG

  • Eine Frage habe ich noch wenn du schon mit meinem Projekt etwas vertraut bist. :)

    Gibt es die möglichkeit via SearchView die angezeigte Liste zu filtern? Also quasi das einem nur das angezeigt wird was ich in der SV eingebe?


    EDIT:

    Was ich aber noch dazu sagen muss ist es werden tausende von titeln angezeigt nachher. Ich weiß jetzt nicht was besser wäre.

    Entweder die mysql suchen lassen am server mit etsprechenden query oder eben in der App in der RecyclerView?


    LG

  • Ich hatte bis jetzt keine Zeit.


    Gut du gibst jetzt den Context mit. Weil dein Konstruktor im Adapter das so will.

    Nur was willst du mit dem Context wozu brauchst du denn?


    Suchen würde ich in der DB. Erst 10000 Datensätze Überrateagen und dann nur 10. brauchen Datenlast.



    .

  • Ich habs nun hinbekommen in der RecyclerView zu suchen jedoch leider wieder mit nem Problem ^^

    Er sucht mir zwar den gewünschten Interpret jedoch beim löschen eines oder allen Buchstaben in der SearchView kommen die ausgeblendeten resultate (die exampleListFull) nicht mehr zurück.

    Hab ich da nen Denkfehler oder etwas übersehen oder einfach nur zu blöd?^^


    Dankeschön :)


  • schaue das Mal an.

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


  • Ich stehe nun vor dem nächsten Problem nono124 ^^


    Ich bekomme ja in der JsonAdapter.java hier meinen geklickten Titel und Interpret über Toast angezeigt.


    Wie bekomm ich den Titel und Interpret nun über den Button SongSingen in fragment1 ins die EditText (edTxt)?

    Hab da was gelesen das das mit Intent oder so ähnlich funktionieren soll?


    LG und schönen 2 Advent :)

  • Ok neue woche kein Advent.


    Mir ist aber nicht richtig klar was du willst.

    Ich denke du willst das wenn auf einen listeneintrag geklickt wird eine Action ausgeführt wird.

    Du in einen listener kommst.


    Nur was willst du da in der Viewholder Klasse. Du willst einen Listerner der das recyclerview beobachtet. Ob ein Item von ihm geklickt wurde. Also muss der Listener auch auf dee Instanz von Recyclerview eingerichtet werden.


    Was willst du jetzt mit einem intent?

    Soll jetzt eine neue Activity gestartet werden wo du den Text anzeigen wilkst.

    Odee was?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!