带有TimePicker的Android Recycler View适配器

时间:2017-09-18 15:51:59

标签: android listview android-recyclerview recycler-adapter timepicker

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

当用户每小时点击一下时,会出现时间选择器:

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

1 个答案:

答案 0 :(得分:0)

最后我找到了解决方案。所有这些都发生在RecyclerView Adapter中。我在textView中添加了一个onClick监听器。然后我在创建Dialog Fragment时传递视图。

在onBindViewHolder中:

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

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

            }
        });

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

    }

}

希望它可以帮助别人。