У меня есть 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)
Пожалуйста, помогите !!