Ronnie:
El siguiente código muestra RecyclerView
y actividad subyacente es la disposición Tab. En este momento el código de forma en que se Recibo un error por el que declaro el AlertDialog
error dice Builder cannot be applied to the Class
si uso Contexto de la aplicación se bloquea. He utilizado el mismo código de antes, pero con Firestore
Recycler Adapter
y TabLayout
. Esta pregunta no es un duplicado, null pointer java/lang/nullpointerexception
es demasiado general. He pasado por todos ellos.
public class RecyclerAdapter extends FirestoreRecyclerAdapter<Items,
RecyclerAdapter.MyViewHolder> {
Context context;
public RecyclerAdapter(@NonNull FirestoreRecyclerOptions<Items> options)
{
super(options);
}
@Override
protected void onBindViewHolder(@NonNull MyViewHolder holder, final int
position, @NonNull final Items model) {
holder.name.setText(model.getName());
holder.category.setText(model.getCategory());
holder.price.setText(model.getPrice());
holder.manu.setText(model.getManufacturer());
Picasso.get()
.load(model.getImage())
.fit()
.centerCrop()
.into(holder.Thumbnail);
holder.addtocart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showAddToCartDialog(model);
}
});
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int
viewType) {
View view;
LayoutInflater mInflater = LayoutInflater.from(parent.getContext());
view = mInflater.inflate(R.layout.activity_adapter, parent, false);
return new MyViewHolder(view);
}
class MyViewHolder extends RecyclerView.ViewHolder {
public TextView name;
public TextView category;
public ImageView Thumbnail;
public TextView price;
public TextView manu;
public Button addtocart;
public MyViewHolder(View itemView) {
super(itemView);
name = itemView.findViewById(R.id.rowname);
category = itemView.findViewById(R.id.categorie);
Thumbnail = itemView.findViewById(R.id.thumbnail);
price = itemView.findViewById(R.id.price);
manu = itemView.findViewById(R.id.manu);
addtocart = itemView.findViewById(R.id.cartbutton);
}
}
public void showAddToCartDialog(final Items items) {
View view;
AlertDialog.Builder builder = new
AlertDialog.Builder(RecyclerAdapter.this);
LayoutInflater lflator = LayoutInflater.from(context);
view = lflator.inflate(R.layout.add_to_cart_layout, null);
ImageView image_product_dialogue =
view.findViewById(R.id.image_cart_product);
TextView textView_product_dialogue =
view.findViewById(R.id.text_cart_product);
RadioButton nairobi = view.findViewById(R.id.radio_nairobi);
RadioButton mombasa = view.findViewById(R.id.radio_mombasa);
RadioButton kisumu = view.findViewById(R.id.radio_kisumu);
RadioButton nakuru = view.findViewById(R.id.radio_nakuru);
RadioButton express = view.findViewById(R.id.radio_ex);
RadioButton tomorow = view.findViewById(R.id.radio_tomo);
final ElegantNumberButton text_count =
view.findViewById(R.id.text_count);
express.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean
isChecked) {
if (isChecked) {
Items.delivery = 0;
}
}
});
tomorow.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean
isChecked) {
if (isChecked)
Items.delivery = 1;
}
});
nairobi.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean
isChecked) {
if (isChecked)
Items.location = 0;
}
});
mombasa.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean
isChecked) {
if (isChecked)
Items.location = 1;
}
});
kisumu.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean
isChecked) {
if (isChecked)
Items.location = 2;
}
});
nakuru.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean
isChecked) {
if (isChecked)
Items.location = 3;
}
});
Picasso.get()
.load(items.getImage())
.fit()
.centerCrop()
.into(image_product_dialogue);
textView_product_dialogue.setText(items.getName());
builder.setView(view);
builder.setNegativeButton("ADD TO CART", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// showConfirmDialogue(position, text_count.getNumber(),
text_count.getNumber());
dialog.dismiss();
}
});
builder.show();
}
}
Kelvin:
Pase contexto de actividad en el constructor y el uso de ese contexto para crear diálogo. algo como..
public RecyclerAdapter(@NonNull FirestoreRecyclerOptions<Items> options,Activity context)
{
super(options);
this.context=context;
}