onclicklistener nullpointerexpection java

jjhzyzn0  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(553)

此问题已在此处找到答案

什么是nullpointerexception,如何修复它((12个答案)
6天前关门。
我已经使用android studio在java中构建了一个RecycleWeber应用程序。当我运行应用程序时,它崩溃了,当我检查logcat时,我发现我的适配器中有一个空指针异常。 onBindViewHolder 方法。这包括第49行。

  1. @Override
  2. public void onBindViewHolder(@NonNull ContactsAdapter.ViewHolder holder, int position) {
  3. holder.txtName.setText(contacts.get(position).getName());
  4. holder.txtName.setText(contacts.get(position).getEmail());
  5. Glide.with(context).asBitmap().load(contacts.get(position).getImage()).into(holder.image);
  6. holder.parent.setOnClickListener(new View.OnClickListener() {
  7. @Override
  8. public void onClick(View view) {
  9. Toast.makeText(context, contacts.get(position).getName() + " Clicked", Toast.LENGTH_SHORT).show();
  10. }
  11. });
  12. }

logcat日志

  1. java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.cardview.widget.CardView.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
  2. at com.example.learningapplication.ContactsAdapter.onBindViewHolder(ContactsAdapter.java:49)
  3. at com.example.learningapplication.ContactsAdapter.onBindViewHolder(ContactsAdapter.java:19)

编辑:以下是完整代码:

  1. package com.example.learningapplication;
  2. import android.content.Context;
  3. import android.view.LayoutInflater;
  4. import android.view.View;
  5. import android.view.ViewGroup;
  6. import android.widget.ImageView;
  7. import android.widget.TextView;
  8. import android.widget.Toast;
  9. import androidx.annotation.NonNull;
  10. import androidx.cardview.widget.CardView;
  11. import androidx.recyclerview.widget.RecyclerView;
  12. import com.bumptech.glide.Glide;
  13. import java.util.ArrayList;
  14. public class ContactsAdapter extends RecyclerView.Adapter<ContactsAdapter.ViewHolder>{
  15. private Context context;
  16. ArrayList<Contacts> contacts = new ArrayList<>();
  17. public void setContacts(ArrayList<Contacts> contacts) {
  18. this.contacts = contacts;
  19. notifyDataSetChanged();
  20. }
  21. public ContactsAdapter(Context context) {
  22. this.context = context;
  23. }
  24. public ContactsAdapter() {
  25. }
  26. @NonNull
  27. @Override
  28. public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  29. View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.contacts_layout, parent, false);
  30. return new ViewHolder(view);
  31. }
  32. @Override
  33. public void onBindViewHolder(@NonNull ContactsAdapter.ViewHolder holder, int position) {
  34. holder.txtName.setText(contacts.get(position).getName());
  35. holder.txtName.setText(contacts.get(position).getEmail());
  36. Glide.with(context).asBitmap().load(contacts.get(position).getImage()).into(holder.image);
  37. holder.parent.setOnClickListener(new View.OnClickListener() {
  38. @Override
  39. public void onClick(View view) {
  40. Toast.makeText(context, contacts.get(position).getName() + " Clicked", Toast.LENGTH_SHORT).show();
  41. }
  42. });
  43. }
  44. @Override
  45. public int getItemCount() {
  46. return contacts.size();
  47. }
  48. public static class ViewHolder extends RecyclerView.ViewHolder{
  49. private TextView txtName;
  50. private TextView txtEmail;
  51. private ImageView image;
  52. private CardView parent;
  53. public ViewHolder(@NonNull View itemView) {
  54. super(itemView);
  55. txtName = itemView.findViewById(R.id.txtName);
  56. txtEmail = itemView.findViewById(R.id.txtEmail);
  57. image = itemView.findViewById(R.id.image);
  58. }
  59. }
  60. }
  61. ``
7hiiyaii

7hiiyaii1#

据我了解: holder.parent -这是 null 检查您的初始化

相关问题