Adapter declared
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
chartFragment = inflater.inflate(R.layout.fragment_chart, container, false);
collatzViewModel = new ViewModelProvider(getActivity()).get(CollatzViewModel.class);
mRecyclerView = (RecyclerView) chartFragment.findViewById(R.id.recycler_view_chart);
mRecyclerView.setHasFixedSize(false);
mLayoutManager = new LinearLayoutManager(getActivity());
mAdapter = new ChartAdapter();
mRecyclerView.setLayoutManager(mLayoutManager);
collatzViewModel.getChartItems().observe(getViewLifecycleOwner(),(list)->{
mAdapter.setList(list);
mAdapter.notifyDataSetChanged();
Log.v("list", "" + list.get(1).getSectionInformation());
});
return chartFragment;
}
Adapter Class
public class ChartAdapter extends RecyclerView.Adapter<ChartAdapter.ViewHolder> {
ArrayList<ChartItem> list = new ArrayList<ChartItem>();
public ChartAdapter(){}
public ChartAdapter(ArrayList<ChartItem> list) {
this.list = list;
}
@NonNull
@Override
public ChartAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.chart_row, parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ChartAdapter.ViewHolder holder, int position) {
holder.chartSectionTitle.setText(list.get(position).getSectionName());
holder.chartSectionInfo.setText(list.get(position).getSectionInformation());
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView chartSectionTitle;
public TextView chartSectionInfo;
public ViewHolder(@NonNull View itemView) {
super(itemView);
chartSectionTitle = itemView.findViewById(R.id.chart_section_title);
chartSectionInfo = itemView.findViewById(R.id.chart_section_info);
}
}
public void setList(ArrayList<ChartItem> list) {
this.list = list;
}
The ViewModel list does get filled, but it does not display the items and it keeps saying No adapter attached; skipping layout when I switch tabs. I am not sure if 'mAdapter.notifyDataSetChanged()' is not working because of something. I looked over everything and I could not find the problem.
If anyone wants to look, here is my repository: https://github.com/ErickSorto/Collatz-Calculator