RecylerView Adapter onCreateViewHolder & onBindViewHolder not called: view empty
<p>I'm using <code>RecyclerView</code>, <code>CardView</code>, <code>Fragment</code> and <code>AsyncTask</code> in an Android version 23 project in Android Studio. I'm attempting to debug the app on a Samsung Galaxy S7. No matter what I seem to try codewise, the <code>onCreateViewHolder</code> and <code>onBindViewHolder</code> methods of my <code>RecyclerView.Adapter</code> implementation class never get called. </p>

<p>Activity:</p>

<pre><code>public class RecyclerViewFragmentActivity extends FragmentActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.todays_visit_list_container);
        if (savedInstanceState == null) {
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            RecyclerViewFragment fragment = new RecyclerViewFragment();
            transaction.replace(R.id.sample_content_fragment, fragment);
            transaction.commit();
        }

    }
}
</code></pre>

<p>Fragment:</p>

<pre><code>public class RecyclerViewFragment extends Fragment {
    protected RecyclerView mRecyclerView;
    protected RecyclerView.LayoutManager mLayoutManager;
    protected RecyclerViewAdapter mAdapter;
    protected ListRefresher aListRefresher;

    protected class ListRefresher extends AsyncTask&lt;Uri, Void, Void&gt; {
        private ArrayList&lt;Probationer&gt; probationers = null;
        RecyclerViewFragment fragment = null;

        public ListRefresher(RecyclerViewFragment fragment) {
            this.fragment = fragment;
        }

        @Override
        protected Void doInBackground(Uri... params) {
            ArrayList&lt;Probationer&gt; probationers = new ArrayList&lt;Probationer&gt;();
            // getData makes a JSON call to retrieve data for RecyclerView Adapter
            listobjects = getData();
            return null;
        }

        @Override
        protected void onPostExecute(Void unused) {
            fragment.onTaskCompleted();
        }

        public ArrayList getItems() {
            return probationers;
        }

    }

    protected void onTaskCompleted() {
            PPOTodaysVisitListAdapter adapter = new PPOTodaysVisitListAdapter(getActivity(), aListRefresher.getItems());
            mRecyclerView.setAdapter(adapter);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.todays_visit_list, container, false);
        mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view);
            LinearLayoutManager llm = new LinearLayoutManager(getActivity());
            llm.setOrientation(LinearLayoutManager.VERTICAL);
            llm.scrollToPosition(0);
            mRecyclerView.setLayoutManager(llm);
            mRecyclerView.setHasFixedSize(true);
            aListRefresher = new ListRefresher(this);
            aListRefresher.execute();
        return rootView;
    }
}
</code></pre>

<p>Adapter:</p>

<pre><code>public class RecyclerViewAdapter extends RecyclerView.Adapter&lt;RecyclerViewAdapter.MyViewHolder&gt; {
    private ArrayList&lt;Probationer&gt; probationers;
    Context context;

    public RecyclerViewAdapter(Context context, ArrayList&lt;Probationer&gt; probationers) {
        this.probationers = probationers;
        this.context = context;
    }

        public static class MyViewHolder extends RecyclerView.ViewHolder {
            public CardView cv;
            public TextView supervisionLevel;
            public TextView popCodes;
            public TextView unavailable;
            public TextView offenderId;
            public TextView name;
            public TextView birthDate;
            public TextView addressLine1;
            public TextView addressLine2;
            public TextView lastDrugScreen;
            public TextView lastDrugScreenResultNeg;
            public TextView lastDrugScreenResultPos;
            public TextView mainCrime;
            public TextView lastDate1Lbl;
            public TextView lastDate2Lbl;
            public TextView lastDate3Lbl;
            public TextView lastDate4Lbl;
            public TextView lastDate1;
            public TextView nextDate1;
            public TextView lastDate2;
            public TextView nextDate2;
            public TextView lastDate3;
            public TextView nextDate3;
            public TextView lastDate4;
            public TextView nextDate4;

            MyViewHolder(View itemView) {
                    super(itemView);
                    cv = (CardView) itemView.findViewById(R.id.cardView);
            supervisionLevel = (TextView) itemView.findViewById(R.id.supervisionLevel);
                    unavailable = (TextView) itemView.findViewById(R.id.unavailable);
                    popCodes = (TextView) itemView.findViewById(R.id.popCodes);
                    .
                    .
                    .
            }
        }

    @Override
    public RecyclerViewAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //Inflate the layout, initialize the View Holder
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.todays_visit_list_item, parent, false);
        RecyclerViewAdapter.MyViewHolder holder = new RecyclerViewAdapter.MyViewHolder(v);
        return holder;

    }

    @Override
    public void onBindViewHolder(RecyclerViewAdapter.MyViewHolder viewHolder, final int position) {
        if (probationers != null &amp;&amp; probationers.size() &gt; 0) {
            Probationer aProbationer = probationers.get(position);
            if (aProbationer != null) {
                viewHolder.offenderId.setText(aProbationer.getProbationerId());
                viewHolder.name.setText(aProbationer.getName());
                viewHolder.birthDate.setText(aProbationer.getDateOfBirth());
                viewHolder.supervisionLevel.setText(aProbationer.getSupervisionLevel());
                viewHolder.unavailable.setText(aProbationer.getUnavailable());
                .
                .
                .
         }
    }

    @Override
    public int getItemCount() {
        return probationers.size();
    }
}
</code></pre>

<p>RecyclerView layout (todays_visit_list.xml):</p>

<pre><code>&lt;LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"&gt;
    &lt;android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/&gt;
&lt;/LinearLayout&gt;
</code></pre>

<p>CardView layout (todays_visit_list_item.xml):</p>

<pre><code>&lt;android.support.v7.widget.CardView
    android:id="@+id/cardView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="@dimen/activity_vertical_margin"
    app:cardCornerRadius="@dimen/activity_vertical_margin"
    app:cardElevation="@dimen/activity_vertical_margin"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"&gt;
    &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"&gt;
        &lt;RelativeLayout 
            android:id="@+id/photolayout"
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="72dip"
            android:layout_height="100dip"
            android:layout_marginTop="6dip"&gt;   
            &lt;ImageView  
                android:id="@+id/loadingphoto"
                android:scaleType="fitEnd"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:src="@drawable/nopicture"/&gt;
            &lt;ImageView  
                android:id="@+id/photo"
                android:scaleType="fitEnd"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:visibility="gone"/&gt;
        &lt;/RelativeLayout&gt;
        &lt;RelativeLayout
            android:id="@+id/supmsglayout"
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="72dip"
            android:layout_height="20dip"
            android:layout_marginTop="6dip"
            android:layout_below="@id/photolayout"
            android:layout_alignLeft="@id/photolayout"&gt;
            &lt;TextView android:id="@+id/supervisionLevel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="6dip"
                android:layout_marginLeft="2dip"
                android:textSize="11sp"
                android:textStyle="bold"/&gt;
            &lt;TextView android:id="@+id/unavailable"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:textStyle="bold"
                android:layout_toRightOf="@id/supervisionLevel"
                android:layout_alignTop="@id/supervisionLevel"/&gt;
            &lt;TextView android:id="@+id/popCodes"
                android:layout_width="76dip"
                android:layout_height="wrap_content"
                android:layout_marginTop="2dip"
                android:textSize="11sp"
                android:textColor="#E79A00"
                android:textStyle="bold"
                android:layout_below="@id/supervisionLevel"
                android:layout_alignLeft="@id/supervisionLevel"/&gt;
        &lt;/RelativeLayout&gt;
        &lt;RelativeLayout
            android:id="@+id/contentlayout"
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="300dip"
            android:layout_height="100dip"
            android:layout_marginTop="8dip"
            android:layout_marginLeft="4dip"
            android:layout_toRightOf="@id/photolayout"
            android:layout_alignTop="@id/photolayout"&gt;
            &lt;TextView android:id="@+id/offenderIdLbl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Offender ID: "
                android:textStyle="bold"
                android:textSize="11sp"/&gt;
            &lt;TextView android:id="@+id/offenderId"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:layout_toRightOf="@id/offenderIdLbl"
                android:layout_alignTop="@id/offenderIdLbl"/&gt;
            &lt;TextView android:id="@+id/nameLbl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Name: "
                android:textStyle="bold"
                android:textSize="11sp"
                android:layout_below="@id/offenderIdLbl"
                android:layout_alignLeft="@id/offenderIdLbl"/&gt;
            &lt;TextView android:id="@+id/name"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:layout_toRightOf="@id/nameLbl"
                android:layout_alignTop="@id/nameLbl"/&gt;
            &lt;TextView android:id="@+id/birthDateLbl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Birth Date: "
                android:textStyle="bold"
                android:textSize="11sp"
                android:layout_below="@id/nameLbl"
                android:layout_alignLeft="@id/nameLbl"/&gt;
            &lt;TextView android:id="@+id/birthDate"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:layout_toRightOf="@id/birthDateLbl"
                android:layout_alignTop="@id/birthDateLbl"/&gt;
            &lt;TextView android:id="@+id/addrLbl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Address: "
                android:textStyle="bold"
                android:textSize="11sp"
                android:layout_below="@id/birthDateLbl"
                android:layout_alignLeft="@id/birthDateLbl"/&gt;
            &lt;TextView
                android:id="@+id/addressLine1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:layout_toRightOf="@id/addrLbl"
                android:layout_alignTop="@id/addrLbl"/&gt;
            &lt;TextView
                android:id="@+id/addressLine2"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:layout_below="@id/addressLine1"
                android:layout_alignLeft="@id/addressLine1"/&gt;
            &lt;TextView android:id="@+id/lastDrugScreenLbl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Drug Scr: "
                android:textStyle="bold"
                android:textSize="11sp"
                android:layout_below="@id/addressLine2"
                android:layout_alignLeft="@id/addrLbl"/&gt;
            &lt;TextView android:id="@+id/lastDrugScreen"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:layout_toRightOf="@id/lastDrugScreenLbl"
                android:layout_alignTop="@id/lastDrugScreenLbl"/&gt;
            &lt;TextView android:id="@+id/lastDrugScreenResultNeg"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:layout_toRightOf="@id/lastDrugScreen"
                android:layout_alignTop="@id/lastDrugScreen"/&gt;
            &lt;TextView android:id="@+id/lastDrugScreenResultPos"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:textColor="#d7144b"
                android:textStyle="bold"
                android:layout_toRightOf="@id/lastDrugScreen"
                android:layout_alignTop="@id/lastDrugScreen"/&gt;
            &lt;TextView android:id="@+id/mainCrimeLbl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Crime: "
                android:textStyle="bold"
                android:textSize="11sp"
                android:layout_below="@id/lastDrugScreenLbl"
                android:layout_alignLeft="@id/lastDrugScreenLbl"/&gt;
            &lt;TextView android:id="@+id/mainCrime"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:layout_toRightOf="@id/mainCrimeLbl"
                android:layout_alignTop="@id/mainCrimeLbl"/&gt;
            &lt;TextView android:id="@+id/lastDate1Lbl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="33dip"
                android:textStyle="bold"
                android:textSize="11sp"
                android:layout_below="@id/mainCrimeLbl"
                android:layout_alignLeft="@id/mainCrimeLbl"/&gt;
            &lt;TextView android:id="@+id/lastDate2Lbl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="34dip"
                android:textStyle="bold"
                android:textSize="11sp"
                android:layout_below="@id/mainCrimeLbl"
                android:layout_toRightOf="@id/lastDate1Lbl"/&gt;
            &lt;TextView android:id="@+id/lastDate3Lbl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="86dip"
                android:textStyle="bold"
                android:textSize="11sp"
                android:layout_below="@id/mainCrimeLbl"
                android:layout_toRightOf="@id/lastDate1Lbl"/&gt;
            &lt;TextView android:id="@+id/lastDate4Lbl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="140dip"
                android:textStyle="bold"
                android:textSize="11sp"
                android:layout_below="@id/mainCrimeLbl"
                android:layout_toRightOf="@id/lastDate1Lbl"/&gt;
            &lt;TextView android:id="@+id/lastLbl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Last: "
                android:textStyle="bold"
                android:textSize="11sp"
                android:layout_below="@id/lastDate1Lbl"
                android:layout_alignLeft="@id/mainCrimeLbl"/&gt;
            &lt;TextView android:id="@+id/nextLbl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Next: "
                android:textStyle="bold"
                android:textSize="11sp"
                android:layout_below="@id/lastLbl"
                android:layout_alignLeft="@id/lastLbl"/&gt;
            &lt;TextView android:id="@+id/lastDate1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:layout_below="@id/lastDate1Lbl"
                android:layout_alignLeft="@id/lastDate1Lbl"/&gt;
            &lt;TextView android:id="@+id/nextDate1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:layout_below="@id/lastDate1"
                android:layout_alignLeft="@id/lastDate1"/&gt;
            &lt;TextView android:id="@+id/lastDate2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:layout_below="@id/lastDate2Lbl"
                android:layout_alignLeft="@id/lastDate2Lbl"/&gt;
            &lt;TextView android:id="@+id/nextDate2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:layout_below="@id/lastDate2"
                android:layout_alignLeft="@id/lastDate2"/&gt;
            &lt;TextView android:id="@+id/lastDate3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:layout_below="@id/lastDate3Lbl"
                android:layout_alignLeft="@id/lastDate3Lbl"/&gt;
            &lt;TextView android:id="@+id/nextDate3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:layout_below="@id/lastDate3"
                android:layout_alignLeft="@id/lastDate3"/&gt;
            &lt;TextView android:id="@+id/lastDate4"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:layout_below="@id/lastDate4Lbl"
                android:layout_alignLeft="@id/lastDate4Lbl"/&gt;
            &lt;TextView android:id="@+id/nextDate4"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textSize="11sp"
                android:layout_below="@id/lastDate4"
                android:layout_alignLeft="@id/lastDate4"/&gt;
        &lt;/RelativeLayout&gt;
        &lt;RelativeLayout
        android:id="@+id/undolayout"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="40dip"
        android:layout_height="100dip"
        android:layout_marginTop="8dip"
        android:layout_marginLeft="4dip"
        android:layout_toRightOf="@id/contentlayout"
        android:layout_alignTop="@id/contentlayout"&gt;
            &lt;Button
                android:id="@+id/undo_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/button_undo"
                android:textAllCaps="true"
                android:textColor="@android:color/white"
                android:layout_gravity="end|center_vertical"
                style="@style/Base.Widget.AppCompat.Button.Borderless"
                /&gt;
        &lt;/RelativeLayout&gt;
    &lt;/LinearLayout&gt;
&lt;/android.support.v7.widget.CardView&gt;
</code></pre>

<p>My JSON call is returning data, and the <code>AsyncTask</code> is calling back to the <code>Fragment</code> and executing method <code>onTaskCompleted()</code>. When I create the instance of <code>RecyclerViewAdapter</code>, the <code>ArrayList</code> contains items. The only problem is that the <code>RecyclerView</code> never displays anything. The <code>onCreateViewHolder</code> and <code>onBindViewHolder</code> methods of <code>RecyclerViewAdapter</code> never get called. </p>

<p>I've played around with the <code>layout_width</code> and <code>layout_height</code> of all elements of both layouts, thinking that somehow that was causing the problem. I've also purposely called <code>notifyDataSetChanged()</code> on the <code>RecyclerViewAdapter</code> after instantiating it and before setting it in the <code>RecyclerView</code>. Also no joy there. </p>

<p>Does anyone see any glaring problem here that could be causing the <code>RecyclerView</code> not to render? </p>

<p>I'm also curious as to what actually triggers the calling of these two methods on the adapter... if I can figure that out, maybe I can determine why the event isn't being triggered. </p>