如何在RecyclerViewAdapter中使用Persian Calander

时间:2018-03-21 09:36:42

标签: android android-studio android-fragments android-recyclerview android-datepicker

我使用特定的日期库(https://github.com/mohamad-amin/PersianMaterialDateTimePicker

现在我想在Recycler View中的按钮中使用它。

现在我的问题是我必须在库代码中定义两个选项:

1 - 我应该参考活动。

2 - 我需要使用getSupport FragmentManager()。

但此页面已使用Recycler View.Adapter扩展,我不知道如何在此页面上调用这两个选项。

RecyclerViewAdapter页面:

                        PersianCalendar persianCalendar = new PersianCalendar();

                    DatePickerDialog datePickerDialog = DatePickerDialog.newInstance( StudentList.this ,
                            persianCalendar.getPersianYear() ,
                            persianCalendar.getPersianMonth() ,
                            persianCalendar.getPersianDay());




                    datePickerDialog.show( getSupportFragmentManager() , "datePickerDialog" );

在这些图片中,您可以轻松了解我:

enter image description here

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:1)

您的活动必须实现66并实现抽象方法TimePickerDialog.OnTimeSetListener

onTimeSet

public class StudentList extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener { @Override public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int second) { } }

onClick

或者:

  DatePickerDialog datePickerDialog = DatePickerDialog.newInstance((((StudentList)view.getContext()),  persianCalendar.getPersianYear(),
                        persianCalendar.getPersianMonth(),
                        persianCalendar.getPersianDay());

答案 1 :(得分:0)

您可以在创建适配器实例时尝试传递Activity的上下文:

//Code in your Activity
MyAdapter myAdapter = new MyAdapter(this, ...);

您的适配器:

private Context context;

    public MyAdapter(Context context, ...){
    this.context = context;
    //Rest of the constructor...
    }

通过这样做,你可以添加这样做:

datePickerDialog.show(context.getSupportFragmentManager(), "datePickerDialog");

答案 2 :(得分:0)

您只需要在构造函数中传递一个活动上下文。一定要从活动中调用新的Adapter(this,...),从片段调用新的Adapter(getActivity(),...)。

private Context context;

@Override
public void onClick(View v) {
FragmentManager manager = ((Activity) context).getFragmentManager();
FragmentManager manager = ((AppCompatActivity)context).getSupportFragmentManager();
}

试试这个