Ändern Sie die Benutzeroberfläche des Recylcerview-Elements, indem Sie auf eine andere Aktivität in Kotlin klicken - android - Program QA

Ändern Sie die Benutzeroberfläche des Recylcerview-Elements, indem Sie auf eine andere Aktivität in Kotlin klicken

2020-06-30 android kotlin android-recyclerview

Ich habe also einen Rückblick wie unten gezeigt. Wenn ich auf die Schaltfläche "Zum Job einladen" klicke, wird eine weitere Aktivität mit einer Schaltfläche geöffnet. Und auf dieser Schaltfläche möchte ich die Schaltfläche des ausgewählten Elements deaktivieren und seinen Text in "Eingeladen" ändern. ::

Geben Sie hier die Bildbeschreibung ein

Das habe ich versucht. Ich habe einen Booleschen Wert unter Verwendung der freigegebenen Einstellungen übergeben, wenn die Schaltfläche einer anderen Aktivität angeklickt wird.

 sharedPref.putBoolean(Constants.CHANGE_INVITE_BUTTON, true)

Und dann habe ich im Adapter von recyclerview Folgendes in onBindViewHolder hinzugefügt:

 if(sharedPref.getBoolean(Constants.CHANGE_INVITE_BUTTON,true)){
                holder.binding.inviteToJobButtonFreelancerScreenCu.isEnabled = false
                holder.binding.inviteToJobButtonFreelancerScreenCu.text = "Invited"
            }

            else{
                holder.binding.inviteToJobButtonFreelancerScreenCu.setOnClickListener {
                    freelancersFragmentCu.onItemClicked(freelancerFilterList[position])

                }
            }

Wenn der Wert wahr ist, ändern Sie einfach den Text und deaktivieren Sie die Schaltfläche. Wenn dies nicht der Fall ist, öffnen Sie die Aktivität mit dieser Schaltfläche weiter. Aber jetzt, wenn ich es starte, sind alle Schaltflächen deaktiviert und ihre Texte haben sich geändert ... also funktioniert es überhaupt nicht richtig.

Bitte helfen Sie mir hier raus. Vielen Dank

Answers

Wenn Sie auf die Invite Job klicken, müssen Sie eine boolesche Variable verwenden, die angibt, dass Sie für diesen bestimmten Job in Ihrem Modell einladen oder nicht, das Sie in Ihrer RecyclerView binden. Und standardmäßig ist diese boolesche ID für alle Jobs falsch.

Sobald Sie auf die Schaltfläche Job einladen klicken, müssen Sie diesen Boolean als true ausführen und Ihren Adapter benachrichtigen.

Die Schaltfläche zum Ändern und Deaktivieren von Text, die Sie basierend auf Ihrem Boolean Wert ausführen müssen.

Dies geschieht, weil Sie versuchen, alle Elemente der Recycler-Ansicht einem einzigen gemeinsam genutzten Prefs-Wert zuzuordnen. Jedes Recycler-Element hat eine individuelle ID. Um dies zu lösen, müssen Sie Ihren Sharedprefs einen zusätzlichen int-Wert hinzufügen

Wann immer Sie sharedPref.putBoolean(Constants.CHANGE_INVITE_BUTTON, true) Anstatt Constants.CHANGE_INVITE_BUTTON ändern Sie es in den Wert des Halterelements.

sharedPref.putBoolean(holder.binding.inviteToJobButtonFreelancerScreenCu.id, true)

Ändern Sie danach Ihre if-Bedingung in:

if(sharedPref.getBoolean(holder.binding.inviteToJobButtonFreelancerScreenCu.id,true))

Daher wird danach bei jeder Aktualisierung Ihres Adapters nur die Element-ID geändert, die true hat.

Related