I am using Recyclerview and Recyclerview adapter generate the null pointer exception .I had tried many things,but i cannot understand the reason.The error say The function getitem count () in Recylcerview adapter is returning null value. Following is My activity code.
package com.example.builderpro;
public class project_list extends AppCompatActivity {
MyViewModel myViewModel;
List<Dproject> myprojectlist;
Toolbar toolbar;
RecyclerView recyclerView;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode== KeyEvent.KEYCODE_BACK) {
return false;
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_project_list);
toolbar=(Toolbar)findViewById(R.id.custom_toolbar);
recyclerView=(RecyclerView)findViewById(R.id.recycler_view);
setSupportActionBar(toolbar);
RecyclerView.LayoutManager layoutManager= new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(layoutManager);
final MyAdaptor myAdaptor=new MyAdaptor();
recyclerView.setAdapter(myAdaptor);
final int sid= getIntent().getIntExtra("supervisor_id",0);
myViewModel= ViewModelProviders.of(this).get(MyViewModel.class);
myViewModel.GetAllProject().observe(this, new Observer<List<Dproject>>() {
@Override
public void onChanged(List<Dproject> dprojects) {
myAdaptor.setproject(dprojects);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.logout_menu,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if(item.getItemId()==R.id.logout)
{
SharedPreferences preferences= getSharedPreferences("checkbox",MODE_PRIVATE);
SharedPreferences.Editor editor= preferences.edit();
editor.putString("remember","false");
editor.apply();
finish();
}
return super.onOptionsItemSelected(item);
}
}
Following is my Adapter code
package com.example.builderpro;
public class MyAdaptor extends RecyclerView.Adapter<MyAdaptor.projectViewHolder>{
private Context context;
private List<Dproject> myprojectlist;
int Position;
public MyAdaptor() {
}
public MyAdaptor(Context context, List<Dproject> myprojectlist) {
this.context = context;
this.myprojectlist = myprojectlist;
}
class projectViewHolder extends RecyclerView.ViewHolder
{
ImageView imageView,imageView2;
TextView title,discription,address;
Button Button1,Button2;
public projectViewHolder(View itemView) {
super(itemView);
imageView=itemView.findViewById(R.id.Project_Image);
title=itemView.findViewById(R.id.Project_Title);
address=itemView.findViewById(R.id.project_address);
discription=itemView.findViewById(R.id.project_dis);
Button1=itemView.findViewById(R.id.activity_button);
Button2=itemView.findViewById(R.id.labour_button);
imageView2=itemView.findViewById(R.id.card_back);
}
}
@Override
public projectViewHolder onCreateViewHolder( ViewGroup parent, int viewType) {
View mview= LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview,parent,false);
return new projectViewHolder(mview);
}
@Override
public void onBindViewHolder(projectViewHolder holder, int position) {
Position=position;
Dproject current_project= myprojectlist.get(position);
holder.imageView.setImageResource(R.drawable.projectpic);
holder.title.setText(current_project.getClient_Name());
holder.discription.setText(current_project.getProject_Discription());
holder.address.setText(current_project.getLocation());
holder.Button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(context,activity.class);
context.startActivity(intent);
}
});
}
@Override
public int getItemCount()
{
return myprojectlist.size();
}
public void setproject(List<Dproject> dprojects)
{
this.myprojectlist=dprojects;
notifyDataSetChanged();
}
}
These lines are from Logcat
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.builderpro, PID: 21616
java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at com.example.builderpro.MyAdaptor.getItemCount(MyAdaptor.java:83)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:4044)
at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3534)
at android.view.View.measure(View.java:19857)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
at android.view.View.measure(View.java:19857)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
at android.view.View.measure(View.java:19857)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
Please help me because i have been stuck on this error for about 5 days. It is really appreciable.