Android RecyclerView inside CardView inside RecyclerView在findViewById上抛出空指针

Android RecyclerView inside CardView inside RecyclerView在findViewById上抛出空指针,android,android-recyclerview,android-cardview,Android,Android Recyclerview,Android Cardview,我正在尝试创建一个RecyclerView,其中每一行都是一个CardLayout,它同样包含一个RecyclerView(带有页眉、项目和页脚)。我尝试从OuterRecyclerView实例化OnBind中的innerRecyclerView,但一直得到一个空指针 <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height=

我正在尝试创建一个RecyclerView,其中每一行都是一个CardLayout,它同样包含一个RecyclerView(带有页眉、项目和页脚)。我尝试从OuterRecyclerView实例化OnBind中的innerRecyclerView,但一直得到一个空指针

  <android.support.v7.widget.RecyclerView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:id="@+id/activity_weekplan_inner_recyclerview"
      />

</android.support.v7.widget.CardView>
“主要”活动代码:

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.view.WindowManager;

import com.squareup.timessquare.CalendarPickerView;

import java.util.List;

import ch.zhaw.it15a_zh.psit3_03.mealmanager.R;
import ch.zhaw.it15a_zh.psit3_03.mealmanager.adapters.OuterWeekplanAdapter;
import ch.zhaw.it15a_zh.psit3_03.mealmanager.db.repos.UserPlannedRecipesRepo;
import ch.zhaw.it15a_zh.psit3_03.mealmanager.models.UserPlannedRecipe;

public class WeekPlanActivity extends AppCompatActivity {
  private RecyclerView outerRecyclerView;
  private CalendarPickerView calendar;
  private UserPlannedRecipesRepo uprr = new UserPlannedRecipesRepo();
  private List<UserPlannedRecipe> userPlannedRecipeList;
  private List<String> distinctUserPlannedDates;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //Hide Top Toolbar form android device
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    //Set LayoutFile
    setContentView(R.layout.activity_weekplan);
    /* BEGIN TOOLBAR */
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_weekplan_overview);
    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle(R.string.toolbar_title_weekplan_activity);
    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    /* END TOOLBAR */

    outerRecyclerView = (RecyclerView) findViewById(R.id.activity_weekplan_outer_recyclerview);
    distinctUserPlannedDates = uprr.getDistinctListOfPlannedDates();

    OuterWeekplanAdapter outerWeekplanAdapter =
      new OuterWeekplanAdapter(getApplicationContext(), distinctUserPlannedDates);

    RecyclerView.LayoutManager manager = new LinearLayoutManager(getApplicationContext());
    outerRecyclerView.setLayoutManager(manager);
    outerRecyclerView.setItemAnimator(new DefaultItemAnimator());
    outerRecyclerView.setAdapter(outerWeekplanAdapter);

  }

  //Inflate Options Menu to show additional buttons in toolbar
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_weekplan_main_menu, menu);
    return super.onCreateOptionsMenu(menu);
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
      case R.id.ic_action_weekplan_add:
        Intent intent = new Intent(this, DateRangePicker.class);
        Context context = this;
        context.startActivity(intent);
    }
    return super.onOptionsItemSelected(item);
  }


}
  <android.support.v7.widget.RecyclerView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:id="@+id/activity_weekplan_inner_recyclerview"
      />

</android.support.v7.widget.CardView>
“主要”活动布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".activities.WeekPlanActivity">

  <include
      layout="@layout/toolbar_weekplan_overview"
      android:id="@+id/toolbar_weekplan_overview"/>

  <android.support.v7.widget.RecyclerView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:id="@+id/activity_weekplan_outer_recyclerview"
      android:layout_below="@id/toolbar_weekplan_overview"
      />

</RelativeLayout>
  <android.support.v7.widget.RecyclerView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:id="@+id/activity_weekplan_inner_recyclerview"
      />

</android.support.v7.widget.CardView>

看起来您使用了错误的视图从调用
findViewById()

  <android.support.v7.widget.RecyclerView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:id="@+id/activity_weekplan_inner_recyclerview"
      />

</android.support.v7.widget.CardView>
 innerRecyclerView = (RecyclerView) holder.findViewById(R.id.activity_weekplan_inner_recyclerview);
而不是

  <android.support.v7.widget.RecyclerView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:id="@+id/activity_weekplan_inner_recyclerview"
      />

</android.support.v7.widget.CardView>
 innerRecyclerView = (RecyclerView) innerRecyclerView.findViewById(R.id.activity_weekplan_inner_recyclerview);

看起来您使用了错误的视图从调用
findViewById()

  <android.support.v7.widget.RecyclerView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:id="@+id/activity_weekplan_inner_recyclerview"
      />

</android.support.v7.widget.CardView>
 innerRecyclerView = (RecyclerView) holder.findViewById(R.id.activity_weekplan_inner_recyclerview);
而不是

  <android.support.v7.widget.RecyclerView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:id="@+id/activity_weekplan_inner_recyclerview"
      />

</android.support.v7.widget.CardView>
 innerRecyclerView = (RecyclerView) innerRecyclerView.findViewById(R.id.activity_weekplan_inner_recyclerview);

在您的OuterWeekPlanView中,外部RecyclerView适配器的支架
加上这个

  <android.support.v7.widget.RecyclerView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:id="@+id/activity_weekplan_inner_recyclerview"
      />

</android.support.v7.widget.CardView>
然后像这样在OnBindViewHolder中使用它

  <android.support.v7.widget.RecyclerView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:id="@+id/activity_weekplan_inner_recyclerview"
      />

</android.support.v7.widget.CardView>
holder.innerRecyclerView.setLayoutManager(manager);
holder.innerRecyclerView.setAdapter(adapter);

在您的OuterWeekPlanView中,外部RecyclerView适配器的支架
加上这个

  <android.support.v7.widget.RecyclerView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:id="@+id/activity_weekplan_inner_recyclerview"
      />

</android.support.v7.widget.CardView>
然后像这样在OnBindViewHolder中使用它

  <android.support.v7.widget.RecyclerView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:id="@+id/activity_weekplan_inner_recyclerview"
      />

</android.support.v7.widget.CardView>
holder.innerRecyclerView.setLayoutManager(manager);
holder.innerRecyclerView.setAdapter(adapter);

天哪,我是个白痴。我忘了在OuterWeekplanViewHolder中实例化内部回收视图。我现在得到不同的错误,但它们与此错误无关。谢谢你的帮助!天哪,我是个白痴。我忘了在OuterWeekplanViewHolder中实例化内部回收视图。我现在得到不同的错误,但它们与此错误无关。谢谢你的帮助!是的,就是这样。我无法理解我是如何错过的。也许我盯着它看太久了。谢谢你的帮助!错误是不可避免的!!是的,就是这样。我无法理解我是如何错过的。也许我盯着它看太久了。谢谢你的帮助!错误是不可避免的!!