почему я не могу создать сетку внутри собственного диалога? - PullRequest
0 голосов
/ 09 марта 2020

Привет всем, у меня есть проблема с созданием "Grid Layout" внутри 'Recyclerview' ..

при первом, я хочу создать временной интервал Like This , но внутри Custom Dialog с помощью RecyclerView .. SO

1 / У меня есть фрагмент, в этом фрагменте я создаю кнопку, я хочу, чтобы при нажатии кнопки появилось диалоговое окно. Появляется

2 / Поэтому я создаю функцию для настраиваемого диалогового окна. (Я также создаю пользовательский макет) .. [ЗАМЕЧАНИЕ: мое диалоговое окно работает без кода recyclerView]

3 / И я создаю recyclerView для временного интервала [ПРИМЕЧАНИЕ: Работа recyclerView внутри другого действия дает мне результат]

НО

4 / когда я хочу создать этот RecyclerView внутри Dialog, он выдает ошибку

(E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NullPointerException)

это функция для пользовательского Диалог

public void DialogTime() {

    final AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
    View mView = getLayoutInflater().inflate(R.layout.dialog_apointment_time, null);


    final Button btnOk = (Button) mView.findViewById(R.id.okb2);
    final Button btnCancle = (Button) mView.findViewById(R.id.cansleb2);


    alert.setView(mView);

    final AlertDialog alertDialog = alert.create();
    alertDialog.setCanceledOnTouchOutside(false);


 /////////////recyclerview////////

    RecyclerView dataList;
    List<String> titles;
    Adapter adapter;

    dataList = view.findViewById(R.id.dataList);

    titles = new ArrayList<>();


    int start=3;
    int end=6;


    int n=15;


    int resultOfCount=60/n;

    int resultOfHour=end-start;
    int totalResult=resultOfCount*resultOfHour;



    int m=0;  //mint akana

    //hamu au maw3idanay ka la start bo end hayaty
    for(int i=0 ;i<totalResult; i++) {

        if(m>45) {
            start ++;
            m=0;
        }



        if(m==0){
            titles.add(Integer.toString(start) +":"+"0"+Integer.toString(m) );
            System.out.println(Integer.toString(start) +":0"+Integer.toString(m));

        }
        else {
            titles.add(Integer.toString(start) +":"+Integer.toString(m) );
            System.out.println(Integer.toString(start) +":"+Integer.toString(m));

        }

        m = m + n;




    }



    adapter = new Adapter(getActivity(),titles);

    GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(),5,GridLayoutManager.VERTICAL,false);
    dataList.setLayoutManager(gridLayoutManager);
    dataList.setAdapter(adapter);









    btnOk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getActivity(), "ok", Toast.LENGTH_SHORT).show();
            alertDialog.dismiss();


        }
    });


    btnCancle.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getActivity(), "cancle", Toast.LENGTH_SHORT).show();

            alertDialog.dismiss();
        }
    });



    alertDialog.show();


}

Ошибка нахождения в этой строке (dataList.setLayoutManager(gridLayoutManager);)

...