在RecyclerView的自定义适配器中充气时获取nullpointerexception

时间:2017-07-08 06:40:00

标签: android nullpointerexception android-recyclerview layout-inflater

这是我的适配器的onCreateViewHolder:

    @Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    try
    {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View v = inflater.inflate(R.layout.faviorate_video_item, parent, false);
        return new ViewHolder(v);
    }
    catch (Exception e)
    {
        return  null ;
    }

}

并且此行抛出NullPointException:

    LayoutInflater.from(parent.getContext());
        View v = inflater.inflate(R.layout.faviorate_video_item, parent, false);

我调试了函数但没有任何东西是空的,所以我不明白是什么原因造成的?

4 个答案:

答案 0 :(得分:2)

  

当应用程序尝试使用时抛出NullPointerException   具有空值的对象引用。

<强> FYI

  

Java try block用于包含可能抛出的代码   例外。因此,无需在此处创建 try-catch 块。

您可以尝试使用

View viewOBJ = LayoutInflater.from(parent.getContext()).inflate(R.layout.faviorate_video_item, parent, false);
ViewHolder viewHolderOBJ = new ViewHolder(viewOBJ);
return viewHolderOBJ;

答案 1 :(得分:2)

我也碰到了这个问题,我的问题是在我的项目布局中我放置了<View>元素,但是没有大写字母V且编译器没有抱怨

 <view
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_weight="1" />

答案 2 :(得分:1)

请删除try块。如下所示

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View v = inflater.inflate(R.layout.faviorate_video_item, parent, false);
        return new ViewHolder(v);


}

答案 3 :(得分:0)

根据你的错误行我想它可能是:

  1. 您的项目布局
  2. 您的数据
  3. 如果其中一个(最可能是第一个)导致问题,您可能会在膨胀时遇到无关错误。所以我建议先检查一下