On a null object reference в RecyclerView
В BottomSheetDialog встроил RecyclerView в котором информация тянеться с Rest-api.Но у меня почему то пишет что мой адаптер для ресайкла пустой... Вот лог
03-02 11:37:00.663 27075-27075/com.example.mycinemaapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mycinemaapp, PID: 27075
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mycinemaapp/com.example.mycinemaapp.MovieDetails}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setAdapter(androidx.recyclerview.widget.RecyclerView$Adapter)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2511)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2571)
at android.app.ActivityThread.access$900(ActivityThread.java:165)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1409)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:171)
at android.app.ActivityThread.main(ActivityThread.java:5620)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setAdapter(androidx.recyclerview.widget.RecyclerView$Adapter)' on a null object reference
at com.example.mycinemaapp.MovieDetails.initialization(MovieDetails.java:92)
at com.example.mycinemaapp.MovieDetails.onCreate(MovieDetails.java:61)
at android.app.Activity.performCreate(Activity.java:6320)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1121)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2464)
Вот сам адаптер
public class EpisodesAdapter extends RecyclerView.Adapter<EpisodesAdapter.EpisodesViewHolder> {
private List<Episode> episodesList;
public EpisodesAdapter(List<Episode> episodesList) {
this.episodesList = episodesList;
}
@NonNull
@Override
public EpisodesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
Context context = null;
View view = LayoutInflater.from(context).inflate(R.layout.item_episodes_container, parent,
false);
return new EpisodesViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull EpisodesViewHolder holder, int position) {
// ((EpisodesViewHolder)holder).navigation_episode.setText("Hello");
((EpisodesViewHolder)holder).navigation_episode.setText(episodesList.get(position).getEpisode());
// ((EpisodesViewHolder)holder).title_series.setText(episodesList.get(position).getName());
// ((EpisodesViewHolder)holder).date_series.setText(episodesList.get(position).getSeason());
}
@Override
public int getItemCount() {
return episodesList.size();
}
public void setList(List<Episode> episodesList) {
this.episodesList = episodesList;
notifyDataSetChanged();
}
static class EpisodesViewHolder extends RecyclerView.ViewHolder {
private TextView navigation_episode, title_series, date_series;
public EpisodesViewHolder(@NonNull View itemView) {
super(itemView);
navigation_episode = itemView.findViewById(R.id.navigation_episode);
title_series = itemView.findViewById(R.id.title_series);
date_series = itemView.findViewById(R.id.date_series);
}
}
}
А вот класс где я его вызываю
public class MovieDetails extends AppCompatActivity {
private MovieListViewModel movieListViewModel;
private String tvShowId;
public TVShowDetails tvShowDetails;
private Button episodes_btn;
private RecyclerView episode_recycler;
private EpisodesAdapter episodesAdapter;
private List<Episode> episodesList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_movie_details);
initialization();
getTVShowDetails();
}
private void initialization() {
episode_recycler = findViewById(R.id.episodes_recycler);
episodesList = new ArrayList<>();
episodesAdapter = new EpisodesAdapter(episodesList);
episode_recycler.setAdapter(episodesAdapter);
episode_recycler.setLayoutManager(new LinearLayoutManager(this));
episodes_btn = findViewById(R.id.episodes_btn);
episodes_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(MovieDetails.this);
ViewGroup parent;
ViewGroup root;
View bottomSheetView = LayoutInflater.from(MovieDetails.this).
inflate(R.layout.episodes_layout,
(LinearLayout)findViewById(R.id.bottom_sheet_container),
false);
bottomSheetDialog.setContentView(bottomSheetView);
bottomSheetDialog.show();
}
});
}
private void getTVShowDetails(){
if(getIntent().hasExtra("movie")){
MovieModel movieModel = getIntent().getParcelableExtra("movie");
tvShowId = String.valueOf(movieModel.getId());
detailsApi(tvShowId);
movieListViewModel.getDetails().observe(
this, tvShowDetails-> {
if (tvShowDetails !=null){
episodesAdapter.setList(tvShowDetails.getEpisodes());
}
}
);
}
}
Подскажите пожалуйста, что я не так делаю?