2016-11-04 11 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"); 
    } 
関連する問題