1

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

0 Answers0