代码之家  ›  专栏  ›  技术社区  ›  Joan Marc Sanahuja

带有时间选择器的Android回收器视图适配器

  •  0
  • Joan Marc Sanahuja  · 技术社区  · 9 年前

    我有一个带有RecyclerView的片段,用户可以在其中引入一个或多个时区,选择开始和结束时间。

    选择小时后,我想将文本小时更改为用户选择的小时。我显示了RecyclerView适配器中的时间选择器,但我不知道如何从onTimeSet传递来修改小时的textView。据我所知,它必须在RecyclerView适配器内。

    1 回复  |  直到 9 年前
        1
  •  0
  •   Joan Marc Sanahuja    9 年前

    最后我找到了解决办法。所有这些都发生在RecyclerView适配器内部。我在textView中添加了一个onClick侦听器。然后在创建对话框片段时传递视图。

    horarioViewHolder.mFromTime.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    DialogFragment newFragment = new TimePickerFragment(v);
                    newFragment.show(((ChefAltaUnoActivity)mContext).getSupportFragmentManager(), "timePicker");
    
                }
            });
    

    内部时间选择器片段:

    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.");
    
        }
    
    }