-1

我通過啓動對話框的適配器調用接口函數。 我想根據用戶與對話框的交互方式來更新回收者視圖列表,即他是否按下了正向按鈕或負向按鈕。我現在面臨更新recyclerview列表時出錯?

問題:

方法我都試過了,只要用戶按下正面或負面的按鈕,更新全局變量並在此基礎上的結果執行操作。 但是我面臨的問題是函數返回全局值,甚至在用戶按下ok/cancel按鈕之前。

採納者從那裏我調用該函數:

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功能:

@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; 

    } 

全局變量:

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

你可以分享一些代碼? –

+0

我已經添加了代碼@SurajRao –

+0

你在apater中使用了什麼樣的全局變量?向我們顯示代碼 –

回答

0

布爾默認值爲false 所以即使如果你沒有賦值,它會返回false

你可以像適配器類中使用假的取消,只是更新列表一樣

創建方法

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

這樣稱呼它

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

我應該在哪裏調用更新方法?在適配器?意味着如何。我的適配器和recyclerview在調用適配器活動 –

+0

,如果你想從裏面適配器調用不僅僅是稱呼它更新(modelList) 如果你想從創建adpter實例 不是這樣稱呼它 活動或片段致電定義((MyRecyclerAdapter)recyclerView.getAdapter())更新(modelList); –

+0

我打電話更新(modelList)無論列表正在更新。有沒有其他的替代品可以調用適配器中的函數。第二點,只有當我滾動recyclerview時纔會調用這個函數。 –