-1

Ich rufe eine Interface-Funktion über den Adapter auf, der das Dialogfeld startet. Ich möchte die Recycler-Ansichtsliste basierend auf der Interaktion des Benutzers mit dem Dialogfeld aktualisieren, d. H. Ob er die positive oder die negative Schaltfläche gedrückt hat.Fehler beim Aktualisieren der Recyclerview-Liste?

Problem, das ich bin vor:

Ansatz habe ich versucht, wann immer Benutzer positive oder negative Taste drückt, aktualisieren Sie die globale Variable und basierend auf diesem Ergebnis der Durchführung der Operation. Aber das Problem, mit dem ich konfrontiert bin, ist die Funktion, die den globalen Wert zurückgibt, noch bevor der Benutzer die OK/Abbrechen-Taste drückt.

Adopter aus, wo ich bin Aufruf der Funktion:

holder.actionTask.setOnTouchListener(new View.OnTouchListener() { 
       @Override 
       public boolean onTouch(View view, MotionEvent motionEvent) { 

        Context mainActivityContext= Constants.getContext(); 

        if (action_id.equals("pain")) 
        { 

         if (mainActivityContext!=null && mainActivityContext instanceof MainActivity) 
         { 
          interfaceAdapter=((HealthVitalsFunction) mainActivityContext); 
          interfaceAdapter.openPainRecordDialog(context,dbHelper); 

          Toast.makeText(context,"Pain "+Boolean.toString(Constant.taskdone), Toast.LENGTH_SHORT).show(); 
         } 

        } 
     } 
} 

openPainRecordDialog Funktion:

@Override 
    public boolean openPainRecordDialog(final Context context, final DbHelper dbHelper) { 


     alertDialogBuilder 
       .setCancelable(false) 
       .setPositiveButton("ADD", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 

      **Constants.taskDone=true;** 
       }) 
       .setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
      Constants.taskDone=false; 
         dialog.cancel(); 
        } 
       }); 

     AlertDialog alertDialog = alertDialogBuilder.create(); 

     alertDialog.show(); 

     return Constants.taskDone; 

    } 

Globale Variable:

public class Constants { 
      public static boolean taskDone; 
} 
+0

können Sie einen Code teilen? –

+0

Ich habe den Code hinzugefügt @SurajRao –

+0

Welche Art von globalen Variablen verwenden Sie in Apater? Zeigen Sie uns Code –

Antwort

0

für boolean Standardwert falsch ist so auch Wenn Sie keinen Wert zuweisen, wird false zurückgegeben

create-Methode innerhalb Adapter Klasse

Sie wie Verwendung wie

false für abzubrechen und nur Liste aktualisieren tun können

public void update(ArrayList<Model> modelList){ 
    adapterModelList.clear(); 
    for (Product model: modelList) { 
     adapterModelList.add(model); 
    } 
    notifyDataSetChanged(); 
} 

Nennen Sie es wie

((MyRecyclerAdapter)recyclerView.getAdapter()).update(modelList); 
+0

Wo soll ich Update-Methode aufrufen? im Adapter? bedeutet wie. mein Adapter und recyclerview wird in Aufruf Adapter Aktivität –

+0

definiert, wenn Sie von innen Adapter nennen wollen, als es wie Update nennen (Modellisten) , wenn Sie von Aktivität oder ein Fragment nennen wollen, die adpter Instanz als nennen es wie erstellen ((MyRecyclerAdapter) recyclerView.getAdapter()) .update (modelList); –

+0

Ich rufe das Update (modelList) auf, wo auch immer die Liste aktualisiert wird. Gibt es noch eine Alternative, um die Funktion im Adapter aufzurufen? Zweiter Punkt Diese Funktion wird nur aufgerufen, wenn ich die Recycleransicht durchblättere. –

Verwandte Themen