Android Studio - Получить первичный ключ SQLite через recycleview - PullRequest
0 голосов
/ 10 июля 2019

У меня есть RecyclerView, который получает данные из базы данных SQLite. Он заполняет строки, и я установил прослушиватель onClick для каждой строки. Список строк резервирований и при нажатии появляется всплывающее окно, которое позволяет им выбрать либо редактировать свое резервирование, либо отменить его. Мне нужно, чтобы идентификатор резервирования (первичный ключ) передавался всплывающему окну, чтобы при выборе отмены или редактирования я мог передать идентификатор функциям редактирования / отмены. Я не могу понять, как передать идентификатор бронирования во всплывающее окно. Вот что у меня есть:

package com.example.findaraunt;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;


public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> {
    ArrayList<Integer> resid;
    ArrayList<String> RestaurantName;
    ArrayList<String> RestaurantAddress;
    ArrayList<String> RestaurantPhone;
    ArrayList<String> ReservationDate;
    ArrayList<String> ReservationTime;
    ArrayList<Integer> ReservationSize;
    Context context;
    AlertDialog.Builder builder;

    public CustomAdapter(Context context, ArrayList<Integer> resid, ArrayList<String> RestaurantName, ArrayList<String> RestaurantAddress, ArrayList<String> RestaurantPhone, ArrayList<String> ReservationDate, ArrayList<String> ReservationTime, ArrayList<Integer> ReservationSize) {
        this.context = context;
        this.resid = resid;
        this.RestaurantName = RestaurantName;
        this.RestaurantAddress = RestaurantAddress;
        this.RestaurantPhone = RestaurantPhone;
        this.ReservationDate = ReservationDate;
        this.ReservationTime = ReservationTime;
        this.ReservationSize = ReservationSize;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // infalte the item Layout
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.rowlayout, parent, false);
        MyViewHolder vh = new MyViewHolder(v); // pass the view to View Holder
        return vh;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, final int position) {
        // set the data in items
        holder.resid.setText(Integer.toString(resid.get(position)));
        holder.rName.setText(RestaurantName.get(position));
        holder.rAddress.setText(RestaurantAddress.get(position));
        holder.rPhone.setText(RestaurantPhone.get(position));
        holder.rDate.setText("Date: " + ReservationDate.get(position) + " " + ReservationTime.get(position));
        holder.rSize.setText("Party Size: " + Integer.toString(ReservationSize.get(position)));

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

    public class MyViewHolder extends RecyclerView.ViewHolder {
        TextView resid, rName, rAddress, rPhone, rDate, rSize;// init the item view's
        Integer residInt;

        public MyViewHolder(View itemView) {
            super(itemView);
            //The reference of item view's

            resid = (TextView) itemView.findViewById(R.id.resid);
            final String residText = resid.getText().toString();
            residInt = Integer.parseInt(residText);
            rName = (TextView) itemView.findViewById(R.id.rName);
            rAddress = (TextView) itemView.findViewById(R.id.rAddress);
            rPhone = (TextView) itemView.findViewById(R.id.rPhone);
            rDate = (TextView) itemView.findViewById(R.id.rDate);
            rSize = (TextView) itemView.findViewById(R.id.rSize);
            builder = new AlertDialog.Builder(context);
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    builder.setMessage(R.string.dialog_message) .setTitle(R.string.dialog_title);
                    builder.setCancelable(false)
                            .setPositiveButton("Edit", new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                    //builder.finish();
                                    Toast.makeText(context,"You choose 'Eidt' action for alertbox " + residText,
                                            Toast.LENGTH_SHORT).show();
                                }
                            })
                            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                    //  Action for 'NO' Button
                                    dialog.cancel();
                                    Toast.makeText(context,"You choose 'Cancel' action for alertbox " + residText,
                                            Toast.LENGTH_SHORT).show();
                                }
                            });
                    //Creating dialog box
                    AlertDialog alert = builder.create();
                    alert.show();
                }
                });
            }
        }
}

Когда я запускаю это, я получаю:

2019-07-09 21:52:07.872 12656-12656/com.example.findaraunt E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.findaraunt, PID: 12656
    java.lang.NumberFormatException: For input string: "Resid"
        at java.lang.Integer.parseInt(Integer.java:615)
        at java.lang.Integer.parseInt(Integer.java:650)
        at com.example.findaraunt.CustomAdapter$MyViewHolder.<init>(CustomAdapter.java:78)
        at com.example.findaraunt.CustomAdapter.onCreateViewHolder(CustomAdapter.java:46)
        at com.example.findaraunt.CustomAdapter.onCreateViewHolder(CustomAdapter.java:20)

Пожалуйста, помогите !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...