I've created a recycler view to display data. I want to display a toast message when clicking interview. so, I set this,
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context, "item clicked!!", Toast.LENGTH_SHORT).show();
}
});
in onbindViewHolder method in the adapter class. After run the app app crashed and displayed this error.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.ss.newapp, PID: 27382
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
at android.widget.Toast.<init>(Toast.java:178)
at android.widget.Toast.makeText(Toast.java:595)
at android.widget.Toast.makeText(Toast.java:583)
at com.ss.newapp.DetailsAdapter$1.onClick(DetailsAdapter.java:50)
at android.view.View.performClick(View.java:7509)
at android.view.View.performClickInternal(View.java:7486)
at android.view.View.access$3600(View.java:841)
at android.view.View$PerformClick.run(View.java:28709)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:236)
at android.app.ActivityThread.main(ActivityThread.java:8061)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)
D/OOMEventManagerFK: checkEventAndDumpForJE: 0
I/Process: Sending signal. PID: 27382 SIG: 9
Disconnected from the target VM, address: 'localhost:53359', transport: 'socket'
I checked other solutions reguarding to this error in SO, but it didn't work for my code.
Here is my Adapter.java class
public class DetailsAdapter extends
RecyclerView.Adapter<DetailsAdapter.ViewHolder> {
private List<Details> detailsList;
Context context;
public DetailsAdapter(List<Details> detailsList, Context context){
this.detailsList = detailsList;
this.context = context;
}
@NonNull
@Override
public DetailsAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,
int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_item,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull DetailsAdapter.ViewHolder holder,
int position) {
holder.txtCusCode.setText(detailsList.get(position).getCode());
holder.txtCusName.setText(detailsList.get(position).getName());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context, "item clicked!!", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
return detailsList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
TextView txtCusName, txtCusCode;
public ViewHolder(@NonNull View itemView) {
super(itemView);
txtCusCode = itemView.findViewById(R.id.cusCodeTxt);
txtCusName = itemView.findViewById(R.id.cusNameTxt);
}
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
Context context;
TextView textView;
RecyclerView recyclerView;
LinearLayoutManager layoutManager;
DetailsAdapter detailsAdapter;
List<Details> detailsList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
recyclerView = findViewById(R.id.recyclerview);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
detailsAdapter = new DetailsAdapter(detailsList, context);
recyclerView.setAdapter(detailsAdapter);
context = getApplicationContext();
getDetails();
}
private void getDetails() {
}