来自 RecyclerView 的 DialogFragment

DialogFragment From RecyclerView

现在我有新问题.....我不知道如何初始化 recyclerview 中的 dialogfragment 和片段中的 recyclerview,所以谁知道怎么做?

片段代码:

public View onCreateView( LayoutInflater inflater,  ViewGroup container3,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v =inflater.inflate(R.layout.fragment_one_day_tasks,container3,false);
    final View vd =inflater.inflate(R.layout.dialogod,null);
    TextView textView= (TextView) v.findViewById(R.id.ActiveMenu);
    TextView textView1= (TextView) v.findViewById(R.id.Alert);
    database = new Database(v.getContext());
    mId = database.getLastIdOD();
    if(mId>=1) {
        oneDayList = database.getOneDayList(1);
    }
    database.close();

    //dlg1 = new DialogFragment();
    //GridView gridView = (GridView) v.findViewById(R.id.gridViewActiveOd);
    RecyclerView recyclerView = (RecyclerView) v.findViewById(R.id.gridResc);

    if(0<mId){
        recyclerView.setLayoutManager(new GridAutofitLayoutManager(v.getContext(),350));
        recyclerView.setAdapter(new adapterRecylcerViewGridODN(v.getContext(),oneDayList,inflater));
     /*   gridView.setAdapter(new GridOdAdapter(v.getContext(),oneDayList));
        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    final int position, long id) {
                tapOnAlert(vd,position);
            }
        });*/
    }else{
        textView1.setText("You Haven't got any Active Tasks !");
    }

    FloatingActionButton fab = (FloatingActionButton) v.findViewById(R.id.fabCreateOd);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            getActivity().finish();
            Intent intent = new Intent(getActivity().getApplicationContext(),CreateOneDayNotif.class);
            intent.putExtra("mId",1 + database.getLastIdOD());
            startActivity(intent);
            Snackbar.make(view, "New Task", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
    return v;
}

RecyclerView 适配器代码:

public void onBindViewHolder(SimpleViewHolder holder, final int position) {
    holder.title.setText(mItems.get(position).getTitle());
    datecount = new Datecount(mItems.get(position).getDateAndTime());
    long minute = datecount.getMinuteInt();
    long hour=datecount.getHourInt();
    long day=datecount.getDayInt();
    long year=datecount.getYearInt();
    long month=datecount.getMonthInt();
    holder.dataAtime.setText("On date: " + day+"/"+month+"/"+year+ " On time: "+hour+":"+minute);
    int iconResId = mContext.getResources().getIdentifier(mItems.get(position).getIcon(), "drawable", mContext.getPackageName());
    holder.image.setImageResource(iconResId);
    GradientDrawable bgShape = (GradientDrawable) holder.circle.getDrawable();
    bgShape.setColor(Color.parseColor(mItems.get(position).getColour()));
    holder.mView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //I want to put here dialog.show
          //I want to put here dialog.show

    }
       });

和DialogFragment代码:

   public class DialogFragmentOd extends DialogFragment {

     boolean isFabOpen;
     Animation fab_open,fab_close,rotate_forward,rotate_backward;
   List<OneDayTD> oneDayList;
   int  position;
   Database database;


public static DialogFragmentOd getInstance() {
    DialogFragmentOd dialog = new DialogFragmentOd();
    //Bundle arguments = new Bundle();

    //arguments.putParcelable(Person.class.getName(), person);
    //dialog.setArguments(arguments);
    return dialog;
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View vd = inflater.inflate(R.layout.dialogod, null);
    .........
 getDialog().setContentView(layout);
   return vd;
 }
}

那我需要做什么???

这是处理 ActivityFragment 中所有点击的另一种方法,我们有 Context.

在您的适配器中添加自定义点击侦听器界面。

public interface OnDataClickListener {
    void onDataClick();
}

在您的 Adapter 中创建一个变量来保存自定义点击侦听器

public MyAdapter {
    private OnDataClickListener mOnDataClickListener;

    public MyAdapter(OnDataClickListener listener) {
        mOnDataClickListener = listener;
    }
}

在您的 ViewHolder 中点击按钮时调用自定义界面的点击方法

holder.mView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mOnDataClickListener.onDataClick();
    }
}

在您的 Fragment

中实施 View.OnClickListener
MyFragment implement View.OnClickListener {
    @Override
    public void onClick(View view) {
        // Call/Create your dialog fragment show from here.
    }
}

在初始化Adapter时传递Fragment实例

MyAdapter adapter = new MyAdapter(this);

就这些了。