-1

대화 상자를 시작하는 어댑터를 통해 인터페이스 함수를 호출합니다. 사용자가 대화 상자와 상호 작용하는 방식, 즉 프레스 포지티브 버튼 또는 네거티브 버튼 중 어느 것을 가지고 있는지에 따라 리사이클 러 뷰 목록을 업데이트하려고합니다. I 직면하고recyclerview 목록을 업데이트하는 중 오류가 발생 했습니까?

문제 : I가 시도

접근 사용자가 양 또는 음의 버튼을 누를 때마다, 글로벌 변수를 갱신하고, 동작이 수행 결과에 기초. 하지만 내가 직면하는 문제는 사용자가 확인/취소 버튼을 누르기 전에도 전역 값을 반환하는 기능입니다.

어답터에서 나는 함수를 호출하고 여기서

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

당신은 어떤 종류의 전역 변수를 사용합니까? 코드를 표시하십시오 –

답변

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

어디에서 update 메소드를 호출해야합니까? 어댑터에? 방법을 의미합니다. 내 어댑터와 recyclerview는 당신이 과 같이 호출보다 adpter 예를 를 만들 활동이나 조각에서 호출 할 경우 단지 업데이 트처럼 (modelList) 를 호출보다 내부 어댑터에서 호출 할 경우에 어댑터 활동 –

+0

를 호출에 정의되어 있습니다 ((MyRecyclerAdapter) recyclerView.getAdapter()). update (modelList); –

+0

목록이 업데이트되는 곳에서 update (modelList)를 호출합니다. 어댑터 내부에서 함수를 호출하는 다른 대체 프로그램이 있습니까? 두 번째 점은이 함수가 recyclerview를 스크롤 할 때만 호출된다는 것입니다. –