디버깅을 해봤는데 왜 nullpointer에러가 뜨는지 모르겠습니다..
java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setLayoutManager(androidx.recyclerview.widget.RecyclerView$LayoutManager)' on a null object reference
at com.mango.wellbeingdiary.main.adapter.RegisteredHealthLogAdapter.onBindViewHolder(RegisteredHealthLogAdapter.java:78)
at com.mango.wellbeingdiary.main.adapter.RegisteredHealthLogAdapter.onBindViewHolder(RegisteredHealthLogAdapter.java:21)
[상위 리사이클러뷰]
public class RegisteredHealthLogAdapter extends RecyclerView.Adapter<RegisteredHealthLogAdapter.ViewHolder>{
ArrayList<String> registeredLogs = new ArrayList<>();
RecyclerView recyclerView;
TextView textView;
Button button;
public class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.registeredTextView);
button = itemView.findViewById(R.id.addWeight);
recyclerView = itemView.findViewById(R.id.todayLogRectyclerView);
}
public TextView getTextView() {
return textView;
}
public Button getButton() { return button; }
public RecyclerView getRecyclerView() { return recyclerView; }
}
public RegisteredHealthLogAdapter(ArrayList<String> list) {
registeredLogs = list;
}
@NonNull
@Override
public RegisteredHealthLogAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = null;
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.health_registered_add, parent, false);
return new RegisteredHealthLogAdapter.ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull RegisteredHealthLogAdapter.ViewHolder holder, int position) {
String item = registeredLogs.get(position);
holder.getTextView().setText(item);
// 아이템 추가
ArrayList<setList> setLists = new ArrayList<>();
setList list = new setList("SET", "0", "0");
setLists.add(list);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(holder.itemView.getContext());
holder.getRecyclerView().setLayoutManager(linearLayoutManager);
HealthLogSetAdapter adapter = new HealthLogSetAdapter(setLists);
recyclerView.setAdapter(adapter);
holder.getButton().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 추가하기 버튼이 클릭되면
Toast.makeText(v.getContext(), "클릭됨", Toast.LENGTH_LONG).show();
}
});
}
@Override
public int getItemCount() { return registeredLogs.size(); }
public void addItem(String data) {
registeredLogs.add(data);
}
}
[하위 리사이클러뷰]
public class HealthLogSetAdapter extends RecyclerView.Adapter<HealthLogSetAdapter.ViewHolder>{
ArrayList<com.mango.wellbeingdiary.main.health.list.setList> setList = new ArrayList<>();
TextView setTextView, weightTextView, repsTextView;
public class ViewHolder extends RecyclerView.ViewHolder{
public ViewHolder(@NonNull View itemView) {
super(itemView);
setTextView = itemView.findViewById(R.id.set);
weightTextView = itemView.findViewById(R.id.healthWeight);
repsTextView = itemView.findViewById(R.id.reps);
}
public TextView getSetTextView() { return setTextView; }
public TextView getWeightTextView() { return weightTextView; }
public TextView getRepsTextView() { return repsTextView; }
}
public HealthLogSetAdapter(ArrayList<setList> list) {
setList = list;
}
@NonNull
@Override
public HealthLogSetAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = null;
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.health_log_add_set, parent, false);
return new HealthLogSetAdapter.ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull HealthLogSetAdapter.ViewHolder holder, int position) {
setList item = setList.get(position);
holder.getSetTextView().setText(item.getSetsText());
holder.getSetTextView().setText(item.getWeightText());
holder.getSetTextView().setText(item.getRepsText());
}
@Override
public int getItemCount() {
return setList.size();
}
}