Personnalisé Boîte De Dialogue D'Alerte Avec RecyclerView
Je suis en utilisant RecyclerView
à la liste de quelques-texte et maintenant, je veux faire en sorte que lorsque l'utilisateur clique sur le texte de l'Alerte personnalisée de la boîte de Dialogue pop-up.
J'ai essayé jusqu'à présent, mais à obtenir une NullPointerException; ce qui pourrait être mal ici?
public class CBAdapter extends RecyclerView.Adapter<CBAdapter.ViewHolder> {
List<AdapterData> mItems;
public CBAdapter() {
super();
mItems = new ArrayList<>();
AdapterData data = new AdapterData();
data.setTextOne("Many Bows");
mItems.add(data);
data = new AdapterData();
data.setTextOne("Pardon");
mItems.add(data);
data = new AdapterData();
data.setTextOne("Fall To Knees & Beg");
mItems.add(data);
data = new AdapterData();
data.setTextOne("Backflips");
mItems.add(data);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.test3, viewGroup, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
AdapterData data = mItems.get(i);
viewHolder.textOne.setText(data.getTextOne());
}
@Override
public int getItemCount() {
return mItems.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
public TextView textOne;
private Context context;
public ViewHolder(View itemView) {
super(itemView);
textOne = (TextView)itemView.findViewById(R.id.textView1);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("Title");
TextView text = (TextView) dialog.findViewById(R.id.text);
text.setText("hello world");
ImageView image = (ImageView) dialog.findViewById(R.id.image);
image.setImageResource(R.drawable.ic_launcher);
Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
dialogButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
});
}
}
}
Vérifier si l'ID du
Oui c'est bien ça montre nullpointer et des points à ce problème: la finale de Dialogue boîte de dialogue = new Dialog(contexte);
où est votre
cela se passe parce que vous avez utilisé, mais vous n'avez jamais attribué aucune valeur.
custom_dialog
, text
, image
et dialogButtonOK
sont écrits correctementOui c'est bien ça montre nullpointer et des points à ce problème: la finale de Dialogue boîte de dialogue = new Dialog(contexte);
où est votre
context
d'initialisation.?cela se passe parce que vous avez utilisé, mais vous n'avez jamais attribué aucune valeur.
OriginalL'auteur Jacques Krause | 2015-11-06
Vous devez vous connecter pour publier un commentaire.
Nevermind, j'ai oublié l'initialisation de mon contexte
contexte = itemView.getContext();
OriginalL'auteur Jacques Krause
Ce n'est pas la réponse à votre requête, mais la meilleure façon de gérer ce scénario.
Dans votre Activité:
Cela va implémenter l'interface que nous avons dans notre
Adapter
. Dans cet exemple, il sera appelé lorsque l'utilisateur clique sur un élément dans laRecyclerView
.De votre Carte:
Dans l'Activité, nous avons lancé notre
Adapter
et passé cela comme un argument du constructeur. Cela va lancer notre interface de notre méthode de rappel. Vous pouvez voir que nous utilisons notre méthode de rappel pour les clics.Courtoisie : Activité d'appel de méthode à partir de l'adaptateur
OriginalL'auteur Anoop M
OriginalL'auteur Nikunj
Vous utilisez
context
qui est null ainsi passer lacontext
dansViewHolder
constructeur et CBAdapter constructeur aussi comme ci-dessous:Et dans ViewHolder classe
OriginalL'auteur Pankaj
Ne sont pas directement liés à la question, même si je vous en supplie: NE définissez PAS onClickListener-s à l'intérieur de l'adaptateur!
C'est comment il devrait être fait:
Espère que mes réponses aide à quelqu'un pour écrire un meilleur code 🙂
OriginalL'auteur egorikem
Écrire ce code:
au lieu de
(ou)
Espère que cette aide.
Heureux De Codage 🙂
OriginalL'auteur Venkatesh Selvam