Ronnie:
Le code suivant montre l' RecyclerView
activité de classe et sous - jacente est mise en page Tab. Actuellement , le code de la route est j'obtiens une erreur où je déclare l' AlertDialog
erreur dit Builder cannot be applied to the Class
si j'utiliser le contexte de l'application se bloque. Je l' ai utilisé le même code avant , mais avec Firestore
Recycler Adapter
et TabLayout
. Cette question n'est pas une copie, null pointer java/lang/nullpointerexception
est trop générale. Je suis passé par tous.
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:
Passez contexte d'activité dans le constructeur et utiliser ce contexte pour créer de dialogue. quelque chose comme..
public RecyclerAdapter(@NonNull FirestoreRecyclerOptions<Items> options,Activity context)
{
super(options);
this.context=context;
}