-1

This is the code for the first Recycler Adapter, whenever the 1st button is clicked, it must show the hidden layout containing the other recycler adapter. Both recycler adapters get their data from an arraylist

package com.example.cholomanglicmot.nativechickenandduck.BroodersDirectory;

import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.media.Image;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.HorizontalScrollView;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
import android.support.v4.app.Fragment;

import com.example.cholomanglicmot.nativechickenandduck.DatabaseHelper;
import com.example.cholomanglicmot.nativechickenandduck.R;

import java.io.Console;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class RecyclerAdapter_Brooder_Pen extends RecyclerView.Adapter<RecyclerAdapter_Brooder_Pen.RecyclerViewHolder> {

    ArrayList<Brooders_Pen> arrayList = new ArrayList<>();
    //Map<String, ArrayList<String>> brooder_inventory_dictionary = new HashMap<String, ArrayList<String>>();


    RecyclerView recyclerView;
    RecyclerView.Adapter recycler_adapter;
    RecyclerView.LayoutManager layoutManager;
    ArrayList<Brooder_Inventory> arrayList2 = new ArrayList<>();

    RecyclerAdapter_Brooder_Pen(ArrayList<Brooders_Pen> arrayList, ArrayList<Brooder_Inventory> arrayList2){
        this.arrayList = arrayList;
        this.arrayList2 = arrayList2;



    }

    Context context;

    @Override
    public RecyclerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.brooder_row_layout,parent, false);
        context = parent.getContext();
        RecyclerViewHolder recyclerViewHolder = new RecyclerViewHolder(view);

        return recyclerViewHolder;

    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerViewHolder holder, final int position) {


        final Brooders_Pen broodersPen = arrayList.get(position);
        final RecyclerViewHolder holder2 = holder;
        holder.brooder_pen_number.setText(broodersPen.getBrooder_pen_number());
        holder.brooder_pen_content.setText(broodersPen.getBrooder_pen_content().toString());
        holder.brooder_pen_free.setText(broodersPen.getBrooder_pen_free().toString());

        holder.brooder_inventory.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(holder2.brooder_inventory_layout.getVisibility() == View.VISIBLE){
                    holder2.brooder_inventory_layout.setVisibility(View.GONE);
                }else{
                    holder2.brooder_inventory_layout.setVisibility(View.VISIBLE);

                    //THIS IS WHERE I TRY TO CREATE THE RECYCLER ADAPTER FOR THE CURRENT ITEM BUT THE ERROR SAYS "Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setAdapter(android.support.v7.widget.RecyclerView$Adapter)' on a null object reference"

                    recycler_adapter = new RecyclerAdapter_Brooder_Inventory(arrayList2); //create another recycleradapter
                    recyclerView.setAdapter(recycler_adapter);
                    recycler_adapter.notifyDataSetChanged();


                }

            }
        });



        holder.brooder_add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                FragmentActivity activity = (FragmentActivity)(context);
                FragmentManager fm = activity.getSupportFragmentManager();
                CreateBrooderDialog alertDialog = new CreateBrooderDialog();
                alertDialog.show(fm, "CreateBrooderDialog");


            }
        });

    }

    @Override
    public int getItemCount() {
        return arrayList.size();
    }



    public static class RecyclerViewHolder extends RecyclerView.ViewHolder{
        TextView brooder_pen_number;
        TextView brooder_pen_content;
        TextView brooder_pen_free;
        HorizontalScrollView brooder_inventory_layout;
        ImageButton brooder_add;
        ImageButton brooder_inventory;


        RecyclerViewHolder(View view){
            super(view);
            brooder_pen_number = view.findViewById(R.id.brooder_pen_number);
            brooder_pen_content = view.findViewById(R.id.brooder_pen_content);
            brooder_pen_free = view.findViewById(R.id.brooder_pen_free);
            brooder_inventory_layout = view.findViewById(R.id.brooder_inventory_layout);
            brooder_add = view.findViewById(R.id.brooder_add);
            brooder_inventory = view.findViewById(R.id.brooder_inventory);



        }


    }
    public void showMessage(String title, String message){
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setCancelable(true);
        builder.setTitle(title);
        builder.setMessage(message);
        builder.show();
    }


}

This is the code for the 2nd Recycler adapter that must be created and displayed when the button in the first recycler adapter is pressed

this image is what it must look like when the button for creating another recycler adapter is clicked

package com.example.cholomanglicmot.nativechickenandduck.BroodersDirectory;

import android.app.AlertDialog;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.HorizontalScrollView;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.cholomanglicmot.nativechickenandduck.DatabaseHelper;
import com.example.cholomanglicmot.nativechickenandduck.R;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class RecyclerAdapter_Brooder_Inventory extends RecyclerView.Adapter<RecyclerAdapter_Brooder_Inventory.RecyclerViewHolder> {

    ArrayList<Brooder_Inventory> arrayList2 = new ArrayList<>();
    DatabaseHelper myDb;
    Map<String, ArrayList<String>> brooder_inventory_dictionary = new HashMap<String, ArrayList<String>>();

    RecyclerAdapter_Brooder_Inventory(ArrayList<Brooder_Inventory> arrayList2){
        this.arrayList2 = arrayList2;
       // this.brooder_inventory_dictionary = brooder_inventory_dictionary;


    }

    Context context;

    @Override
    public RecyclerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.brooder_inventory_row_layout,parent, false);
        context = parent.getContext();
        RecyclerViewHolder recyclerViewHolder = new RecyclerViewHolder(view);


        return recyclerViewHolder;

    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerViewHolder holder, final int position) {

        final Brooder_Inventory brooder_inventory = arrayList2.get(position); //nakuha mo na kung anong brooder_inventory ka
        final RecyclerViewHolder holder2 = holder;

        holder.brooder_inventory_code.setText(brooder_inventory.getBrooder_inv_brooder_id());

    }

    @Override
    public int getItemCount() {
        return arrayList2.size();
    }



    public static class RecyclerViewHolder extends RecyclerView.ViewHolder{
        TextView brooder_inventory_code;
        TextView brooder_inventory_family;
        TextView brooder_inventory_line;
        TextView brooder_inventory_gen;
        TextView brooder_inventory_batch_date;

        TextView brooder_inventory_date_added;
        TextView brooder_inventory_last_update;
        TextView brooder_inventory_mort;
        TextView brooder_inventory_cull;

        ImageView brooder_inventory_number_male;
        ImageView brooder_inventory_number_female;
        ImageView brooder_inventory_total;

        RecyclerViewHolder(View view){
            super(view);
            brooder_inventory_code = view.findViewById(R.id.brooder_inventory_code);
            brooder_inventory_family= view.findViewById(R.id.brooder_inventory_family);
            brooder_inventory_line = view.findViewById(R.id.brooder_inventory_line);
            brooder_inventory_gen = view.findViewById(R.id.brooder_inventory_gen);
            brooder_inventory_batch_date = view.findViewById(R.id.brooder_inventory_batch_date);;
            brooder_inventory_date_added = view.findViewById(R.id.brooder_inventory_date_added);;
            brooder_inventory_last_update = view.findViewById(R.id.brooder_inventory_last_update);;
            brooder_inventory_mort = view.findViewById(R.id.brooder_inventory_mort);;
            brooder_inventory_cull = view.findViewById(R.id.brooder_inventory_cull);;

            brooder_inventory_number_male = view.findViewById(R.id.brooder_inventory_number_male);;
            brooder_inventory_number_female = view.findViewById(R.id.brooder_inventory_number_female);;
            brooder_inventory_total = view.findViewById(R.id.brooder_inventory_total);;


        }


    }



}
Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197
  • Where is the error log? – Ayush Khare Feb 21 '19 at 07:00
  • This is the error in the logcat: Process: com.example.cholomanglicmot.nativechickenandduck, PID: 4901 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setAdapter(android.support.v7.widget.RecyclerView$Adapter)' on a null object reference at com.example.cholomanglicmot.nativechickenandduck.BroodersDirectory.RecyclerAdapter_Brooder_Pen$1.onClick(RecyclerAdapter_Brooder_Pen.java:82) – Cholo Manglicmot Feb 21 '19 at 07:06

1 Answers1

0

You have not initialized your RecyclerView recyclerView. The one that is given an adaptor here,

recyclerView.setAdapter(recycler_adapter);

is null.This is why you have your error.

But there are a few more issues at hand. Are you trying to create recyclerviews inside the rows of the outer recyclerview? If so, you need to put a RecyclerView inside each holder. While you are at it, you probably will also have to have a seperate adaptor for each of those recyclerviews so you should add that to the holder as well or attach new ones in onCreateViewHolder().