0

J'ai un fragment avec un RecyclerView où l'utilisateur peut introduire un ou plusieurs fuseaux horaires, en choisissant l'heure de début et de fin.Android Recycler Voir adaptateur avec TimePicker

Lorsque l'utilisateur tape sur toutes les heures, apparaît le sélecteur de temps:

Lorsque l'heure est sélectionnée, je veux changer l'heure du texte à celui sélectionné par le utilisateur. Je montre le timePicker de l'adaptateur RecyclerView mais je ne sais pas comment passer de onTimeSet pour modifier le textView de l'heure. Pour autant que je sache, il doit être dans l'adaptateur RecyclerView.

Répondre

0

Finalement, j'ai trouvé la solution. Tout cela se passe à l'intérieur de l'adaptateur RecyclerView. J'ai ajouté un écouteur onClick au textView. Ensuite, je passe la vue lorsque je crée le Fragment de dialogue.

A l'intérieur du onBindViewHolder:

horarioViewHolder.mFromTime.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       DialogFragment newFragment = new TimePickerFragment(v); 
       newFragment.show(((ChefAltaUnoActivity)mContext).getSupportFragmentManager(), "timePicker"); 

      } 
     }); 

intérieur TimePickerFragment:

public static class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { 


    private View mView; 

    public TimePickerFragment(View view) { 
     mView = view; 
    } 



    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current time as the default values for the picker 


     final Calendar c = Calendar.getInstance(); 
     int hour = c.get(Calendar.HOUR_OF_DAY); 
     int minute = c.get(Calendar.MINUTE); 


     TimePickerDialog timePicker = new TimePickerDialog(getActivity(), R.style.CustomTimePickerDialogTheme, this, hour, minute, 
       DateFormat.is24HourFormat(getActivity())); 


     // Create a new instance of TimePickerDialog and return it 
     return timePicker; 
    } 

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 


     ((TextView) mView).setText("format the time text as you want."); 

    } 

} 

espère que cela aide quelqu'un d'autre.