Как создать новую карту после ввода данных из диалогового окна - PullRequest
0 голосов
/ 02 мая 2020

В основном при нажатии кнопки открывается диалоговое окно, из которого я собираю информацию. После того, как я щелкну опцию «Готово» в диалоговом окне, я хочу создать новую карту, содержащую эту информацию. Я реализовал вид утилизатора для достижения вышесказанного, но по какой-то причине он не работает. Может кто-нибудь сказать мне, что не так?

Вот код моего Адаптера

package com.example.android.teleconsultation_doctor;

import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;

public class AdapterManageSlots extends RecyclerView.Adapter<AdapterManageSlots.ManageSlotsViewHolder> {

    private ArrayList<CardViewManageSlots> mManageSlots;

    public static  class ManageSlotsViewHolder extends RecyclerView.ViewHolder{
        public TextView mSlots, mTiming;
        public ManageSlotsViewHolder(@NonNull View itemView) {
            super(itemView);
            mTiming = itemView.findViewById(R.id.textViewTimingValue);
            mSlots = itemView.findViewById(R.id.textViewSlotValue);
        }
    }

    public AdapterManageSlots(ArrayList<CardViewManageSlots> manageSlots){
        mManageSlots = manageSlots;
    }

    @NonNull
    @Override
    public ManageSlotsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cardview_manage_slots, viewGroup, false);
        ManageSlotsViewHolder evh = new ManageSlotsViewHolder(v);
        return evh;
    }

    @Override
    public void onBindViewHolder(@NonNull ManageSlotsViewHolder manageSlotsViewHolder, int i) {
        CardViewManageSlots currentItem = mManageSlots.get(i);
        manageSlotsViewHolder.mSlots.setText(currentItem.getSlot());
        manageSlotsViewHolder.mTiming.setText(currentItem.getTiming());
    }

    @Override
    public int getItemCount() {
        return mManageSlots.size();
    }
}

Вот код JAVA действия

package com.example.android.teleconsultation_doctor;

import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Calendar;

public class ManageSlots extends AppCompatActivity implements DatePickerDialog.OnDateSetListener, AdapterView.OnItemSelectedListener {
    ImageView imageViewCalender;
    TextView textViewDateValue;
    String date, spinnerSlotValue, spinnerEndTimeValue, spinnerStartTimeValue;
    Button buttonAddSlot;
    private RecyclerView mRecyclerView;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_manage_slots);
        ArrayList<CardViewManageSlots> slotDetails =  new ArrayList<>();
        imageViewCalender = findViewById(R.id.imageViewCalander);
        textViewDateValue = findViewById(R.id.textViewDateValue);
        buttonAddSlot = findViewById(R.id.buttonAddSlot);

        imageViewCalender.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showDatePickerDialog();
            }
        });

        buttonAddSlot.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                AlertDialog.Builder mBuilder = new AlertDialog.Builder(ManageSlots.this);
                View mView = getLayoutInflater().inflate(R.layout.dialog_manage_slots, null);

                Spinner mSpinnerSlots = mView.findViewById(R.id.spinnerSlots);
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(ManageSlots.this, android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.slot_names));
                adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
                mSpinnerSlots.setAdapter(adapter);
                spinnerSlotValue = mSpinnerSlots.getSelectedItem().toString();

                Spinner mSpinnerStartTime = mView.findViewById(R.id.spinnerStartTime);
                ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(ManageSlots.this, android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.time));
                adapter1.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
                mSpinnerStartTime.setAdapter(adapter1);
                spinnerStartTimeValue = mSpinnerStartTime.getSelectedItem().toString();

                Spinner mSpinnerEndTime = mView.findViewById(R.id.spinnerEndTime);
                ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(ManageSlots.this, android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.time));
                adapter2.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
                mSpinnerEndTime.setAdapter(adapter2);
                spinnerEndTimeValue = mSpinnerEndTime.getSelectedItem().toString();

                mBuilder.setPositiveButton("Done", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        //Toast.makeText(ManageSlots.this, "Slot Created!" + spinnerSlotValue + spinnerEndTimeValue + spinnerStartTimeValue, Toast.LENGTH_LONG).show();
                        dialogInterface.dismiss();
                    }
                });

                mBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        dialogInterface.dismiss();
                    }
                });

                mBuilder.setView(mView);
                AlertDialog dialog = mBuilder.create();
                dialog.show();
            }
        });
        String finalTime = spinnerStartTimeValue + "-" + spinnerEndTimeValue;
        Toast.makeText(this, finalTime, Toast.LENGTH_SHORT).show();
        slotDetails.add(new CardViewManageSlots(spinnerSlotValue,finalTime));
        //slotDetails.add(new CardViewManageSlots("Morning","diwwodmw"));
        mRecyclerView = findViewById(R.id.recyclerViewSlots);
        mRecyclerView.setHasFixedSize(true);
        mLayoutManager = new LinearLayoutManager(this);
        mAdapter = new AdapterManageSlots(slotDetails);
        mRecyclerView.setLayoutManager(mLayoutManager);
        mRecyclerView.setAdapter(mAdapter);

    }
    private void showDatePickerDialog() {
        DatePickerDialog datePickerDialog = new DatePickerDialog(
                this,
                this,
                Calendar.getInstance().get(Calendar.YEAR),
                Calendar.getInstance().get(Calendar.MONTH),
                Calendar.getInstance().get(Calendar.DAY_OF_MONTH)
        );
        datePickerDialog.show();
    }

    @Override
    public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
        int i3=i1;
        i3=i3+1;
        date = i2 + "/" + i3 + "/" + i;
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR,i);
        cal.set(Calendar.MONTH,i1);
        cal.set(Calendar.DAY_OF_MONTH,i2);
        String selectedDate = DateFormat.getDateInstance().format(cal.getTime());
        textViewDateValue.setText(selectedDate);
    }

    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
}

Вот код XML действия

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ManageSlots">

    <include
        layout="@layout/toolbar_layout"
        android:id="@+id/mytoolbar"
        />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Select Date:"
        android:id="@+id/textViewSelectDate"
        android:layout_below="@id/mytoolbar"
        android:layout_margin="10dp"
        android:textSize="20dp"
        android:textColor="#000"/>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageViewCalander"
        android:src="@drawable/round_today_black_18dp_2x"
        android:layout_toRightOf="@id/textViewSelectDate"
        android:layout_below="@id/mytoolbar"
        android:layout_marginTop="5dp"
        android:clickable="true"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textViewDateValue"
        android:layout_below="@id/imageViewCalander"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"
        android:textSize="20dp"
        android:text="Aug 21, 2020"
        android:textColor="#000"
        />
    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/textViewDateValue"
        android:id="@+id/recyclerViewSlots"
        android:padding="4dp"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/buttonAddSlot"
        android:text="Add Slot"
        android:layout_alignParentBottom="true"
        android:layout_margin="10dp"
        android:background="@color/colorPrimaryDark"
        android:textColor="#fff"/>
</RelativeLayout>

1 Ответ

0 голосов
/ 02 мая 2020

Если я правильно понимаю, вы хотите что-то вроде этого:

mBuilder.setPositiveButton("Done", new DialogInterface.OnClickListener() {
     @Override
     public void onClick(DialogInterface dialogInterface, int i) {
           spinnerSlotValue = mSpinnerSlots.getSelectedItem().toString();
           spinnerStartTimeValue = mSpinnerStartTime.getSelectedItem().toString();
           spinnerEndTimeValue = mSpinnerEndTime.getSelectedItem().toString();
           String finalTime = spinnerStartTimeValue + "-" + spinnerEndTimeValue;
           slotDetails.add(new CardViewManageSlots(spinnerSlotValue,finalTime));
           mAdapter.notifyDataSetChanged();
           dialogInterface.dismiss();
     }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...