0 Daumen
784 Aufrufe

Aufgabe:

Ich habe eine Klasse namens UserAdapter.class und UserFragment.java, die Funktion beider ist es der App zu ermöglichen, andere Nutzer zu suchen per Eingabe in der Suche, EditText. Die Liste erscheint und zeigt Nutzer an und ich kann sie klicken um mit ihnen zu chatten. Nun möchte ich es dem Nutzer ermöglichen, dass er auch das Profil des anderen Nutzers besuchen kann und nicht durch bei "klicken" direkt chatten.

Da dachte ich an AlertDialog oder Box. Der Nutzer kann aus zwei Optionen wählen: "Chatten" oder "Profil besuchen". Nur, wie genau mache ich das? Nur die Art und Weise wie ich den AlertDialog um diese Funktion zu ermöglichen, möchte ich erfahren.

Dies ist der senOnClickListener mit dem Nutzer zur ChatActivity geleitet wird.

ChatAdapter.class:

// Handle item click
      myHolder.itemView.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {

              /* Click user from user list to start chatting/messaging. Start activity
                by putting UID of receiver. We will use that UID to identify the user
                we are going to chat with
              */

              Intent intent = new Intent(context, ChatActivity.class);
              intent.putExtra("hisUid", hisUid);
              context.startActivity(intent);
          }
      });
  }

Kann ich diesen setOnClickListener einfach in ein If () {} einpacken? Die Idee ist:

Pseudocode(?) ist dies nur:

if ( AlertDialog == 0 ) { 
// Handle item click
      myHolder.itemView.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {

              /* Click user from user list to start chatting/messaging. Start activity
                by putting UID of receiver. We will use that UID to identify the user
                we are going to chat with
              */

              Intent intent = new Intent(context, ChatActivity.class);
              intent.putExtra("hisUid", hisUid);
              context.startActivity(intent);
          }
      });
  }} if ( AlertDialog == 1 ) {
              Intent intent = new Intent(context, ProfileDesAnderenNutzers.class);
              intent.putExtra("hisUid", hisUid);
              context.startActivity(intent);
         ] }
      });
  }

Ich bin mir nur nicht sicher, ob dies so einfach möglich wäre. Ich möchte nur eine Weiterleitung zum Profil des anderen Nutzers, nicht mehr. Dort handle ich dann weitere Funktionen, wie Folgen o.ä.

Avatar von

Ich habe es anders gelöst: Statt setOnClickListener habe ich es durch einen setOnLongClickListener ersetzt. Der Neue setOnClickListener wird dann den User durch einen Klick zum Profil des Users leiten. Durch langes klicken/berühren dann zum Chatfenster.

Ich hätte es im Sinne der DAU-Methode mit einem Drop-down Menü gelöst, das per linkem oder rechten Mausklick auf den Listeneintrag erscheint und beide Varianten zur Auswahl stellt.

1 Antwort

0 Daumen

Antwort mit KI erzeugt

Aufgabe: Alert Dialog erstellen

Um Nutzern die Auswahl zu bieten, ob sie eine ChatActivity starten oder ein Profil besuchen möchten, kannst du tatsächlich einen AlertDialog verwenden. Dieser Dialog bietet eine elegante Lösung, um die Nutzerinteraktion zu steuern und eine Auswahl zu treffen.

Hier ist ein detaillierter Plan, wie du den AlertDialog in deinem onClickListener implementierst:

1. AlertDialog erstellen: Dies tust du, indem du einen AlertDialog.Builder benutzt. Mit diesem Builder kannst du den Titel, die Nachricht und die Buttons für den Dialog konfigurieren.

2. Optionen hinzufügen: Für deine Anforderung benötigst du zwei Buttons im Dialog – einer für "Chatten" und einer für "Profil besuchen".

3. OnClickListeners für die Buttons definieren: Für jeden Button definierst du einen OnClickListener, in dem du die entsprechende Activity startest.

Hier ist der Code, der den AlertDialog erstellt und konfiguriert:

java
// Handle item click
myHolder.itemView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Erstellung des AlertDialogs
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle("Aktion wählen"); // Titel des Dialogs
        
        // Button für "Chatten"
        builder.setPositiveButton("Chatten", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Intent chatIntent = new Intent(context, ChatActivity.class);
                chatIntent.putExtra("hisUid", hisUid);
                context.startActivity(chatIntent);
            }
        });
        
        // Button für "Profil besuchen"
        builder.setNegativeButton("Profil besuchen", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Intent profileIntent = new Intent(context, ProfileDesAnderenNutzers.class);
                profileIntent.putExtra("hisUid", hisUid);
                context.startActivity(profileIntent);
            }
        });
        
        // Erstellung und Anzeige des AlertDialogs
        AlertDialog dialog = builder.create();
        dialog.show();
    }
});


In diesem Codebeispiel wird angenommen, dass context eine gültige Referenz zum Context (z.B. Activity) ist, in dem dieser Adapter verwendet wird. Die Variablen myHolder, hisUid, ChatActivity.class, und ProfileDesAnderenNutzers.class müssen entsprechend deiner bestehenden Implementierung existieren und korrekt referenziert werden.

Mit dieser Lösung kannst du den Nutzern die Freiheit geben, zwischen dem Start einer Chat-Sitzung oder dem Besuch eines Profils zu wählen, und verbesserst damit die Interaktionsmöglichkeiten deiner Anwendung.
Avatar von 2,9 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community