2017-04-05 5 views
0

그래서 어댑터 클래스에서 인터페이스 메서드를 호출합니다. 사용자 입력에 따라 List을 업데이트하고 싶습니다. 나는 그것을 어떻게 성취 할 것인가?android에서 어댑터의 인터페이스 메서드에서 응답을 얻는 방법

어댑터 클래스 :

public class ToDoListAdaptor extends SectionRecyclerViewAdapter < SectionHeader, Action, SectionViewHolder, ChildViewHolder > { 

    @Override 
    public void onBindChildViewHolder(final ChildViewHolder holder, final int sectionPosition, final int childPosition, final Action child) { 

     Context mainActivityContext = Constants.getContext(); 

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

      if (mainActivityContext != null && mainActivityContext instanceof MainActivity) { 
       interfaceAdapter = ((HealthVitalsFunction) mainActivityContext); 
       boolean result = interfaceAdapter.openPainRecordDialog(context, dbHelper, action_id, action_cat_id, action_plan_id, action_name); 

       if (result) 
        update(sectionHeaderList, childPosition); 
      } 

     } 

    } 
} 

문제 내가 업데이 트를 호출 할 수 없습니다 오전()의 경우 입력하여 수행 사용자.

편집 :

@Override 
    public boolean openPainRecordDialog(final Context context, final DbHelper dbHelper, final String action_id, final String action_cat_id, final String action_plan_id, final String action_name) { 


     Constants.painData=false; 
     LayoutInflater layoutInflaterAndroid = LayoutInflater.from(context); 
     final View mView = layoutInflaterAndroid.inflate(R.layout.pain_record, null); 


     final AlertDialog dialog = new AlertDialog.Builder(context) 
       .setView(mView) 
       .setTitle("") 
       .setPositiveButton(android.R.string.ok, null) 
       .setNegativeButton(android.R.string.cancel, null) 
       .setCancelable(false) 
       .create(); 




     dialog.setOnShowListener(new DialogInterface.OnShowListener() { 
      @Override 
      public void onShow(final DialogInterface dialog) { 

       Button positiveButton = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE); 
       positiveButton.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View view) { 
         // TODO Do something 

         if (dialog != null && ((AlertDialog) dialog).isShowing()) { 
          dialog.dismiss(); 
         } 

         Constants.painData = true; 


        } 
       }); 

       Button negativeButton = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_NEGATIVE); 
       negativeButton.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         // TODO Do something 

         if (dialog != null && ((AlertDialog) dialog).isShowing()) { 
          dialog.dismiss(); 
         } 

         Constants.painData = false; 
        } 

       }); 

      } 
     }); 



     // show it 
     dialog.show(); 

     return Constants.painData; 

    } 
+0

당신은 recyclerview의 항목을 클릭하면 팝업 대화 상자를 사용하고 있습니까? – Darish

+0

AlertDialog 클래스를 사용하여 사용자 지정 대화 상자를 표시합니다. @Darish –

+0

원하는대로 alertDialog 팝업을 제대로 표시합니까? – Darish

답변

0

나는 사용자의 입력에 따라 목록을 업데이트합니다.

사용자 지정 대화 상자를 사용하는 경우 onSuccess() 메서드를 정의하는 사용자 지정 인터페이스 콜백을 제공하고 호출 작업에 구현하여 recyclerView를 업데이트 할 수 있습니다. 건배 :

+0

데이터 목록을 업데이트 한 후 notifydatasetchanged 메서드를 호출하면 – Darish

+0

내가 어떻게하는지 예제를 제공 할 수 있습니까? @Darish –

+0

사용자 정의 대화 상자 조각을 사용한 다음 콜백을 생성자에 전달합니다. – Darish