2016-11-04 5 views
1

확장 가능한 리사이클 뷰가 있습니다. 라고 방법을 아래에 내가 ChildViewHolder이이 재활용보기에서 :ChildViewHolder의 DialogFragment에서 데이터를 가져 오는 방법은 무엇입니까?

public void showDatePickerDialog() { 
    DatePickerFragment datePickerFragment= new DatePickerFragment(); 
    SelectionActivity activity = (SelectionActivity) mContext; 
    datePickerFragment.show(activity.getSupportFragmentManager(), "datePicker"); 
} 

내 DatePickerFragment : DatePickerFragment에서

public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { 

    public DatePickerFragment() { 
     // Required empty public constructor 
    } 

    @NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day = c.get(Calendar.DAY_OF_MONTH); 
     DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day); 

     // Create a new instance of DatePickerDialog and return it 
     return datePickerDialog; 
    } 

    @Override 
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 
     TimePickerFragment newFragment = new TimePickerFragment(); 
     newFragment.show(getActivity().getFragmentManager(), "timePicker"); 
    } 
} 

나는 또한 바로 DatePickerFragment 폐쇄 후 TimePickerFragment를 호출.

내 질문은 : 어떻게 ChildViewHolder에서 날짜 정보 (시간 정보)를 얻을 수 있습니까?

+0

당신은 당신의 자신의 수신기를 만들 수 있습니다. DatePickerFragment에 리스너를 설정하고 ChildViewHolder에서 응답을 처리합니다. 나는이 기계 장치가 진짜로 최상인지, 그러나 시도하지 않기 위하여 왜 시도하지 않는지 모른다 – Skullper

+0

@ PavliukR 당신은 맞았다, 감사합니다! 이것이 최선의 접근 방법 인 것 같습니다. 나는 대답을 추가했다. –

답변

0

이 솔루션은 DatePikerFragment에 자신의 수신기를 만드는 것입니다 :

public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{ 

    private DateDialogFragmentListener dateDialogFragmentListener; 

    public void setDateDialogFragmentListener(DateDialogFragmentListener dateDialogFragmentListener) { 
     this.dateDialogFragmentListener = dateDialogFragmentListener; 
    } 

    public interface DateDialogFragmentListener{ 
     void onDateSelected(int year, int month, int dayOfMonth); 
    } 

    @NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day = c.get(Calendar.DAY_OF_MONTH); 
     DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day); 

     return datePickerDialog; 
    } 

    @Override 
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 
     dateDialogFragmentListener.onDateSelected(year, month, dayOfMonth); 
     TimePickerFragment newFragment = new TimePickerFragment(); 
     newFragment.show(getActivity().getFragmentManager(), "df"); 
    } 
} 

그리고 ChildViewHolder에서이 리스너 설정 :

public void showDatePickerDialog() { 
     DatePickerFragment newFragment = new DatePickerFragment(); 
     newFragment.setDateDialogFragmentListener(new DatePickerFragment.DateDialogFragmentListener(){ 

      @Override 
      public void onDateSelected(int year, int month, int dayOfMonth) { 
       timeTextView.setText(year + "/" + month + "/" + dayOfMonth); 
      } 
     }); 

     newFragment.show(activity.getSupportFragmentManager(), "datePicker"); 
    }