【问题标题】:'int java.util.List.size()' on a null object reference空对象引用上的“int java.util.List.size()”
【发布时间】:2020-10-02 15:54:39
【问题描述】:

我想在我的活动中添加许多回收站视图。但我不断收到这个错误。 如何解决这个问题?我在 youtube 上进行了编码。

我得到的错误如下:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.thinkerlab, PID: 26680
    java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
        at com.example.thinkerlab.ChapterAdapter.getItemCount(ChapterAdapter.java:46)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:4044)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3849)
        at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4404)
        at android.view.View.layout(View.java:16697)
        at android.view.ViewGroup.layout(ViewGroup.java:5593)
        at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1915)
        at android.view.View.layout(View.java:16697)
        at android.view.ViewGroup.layout(ViewGroup.java:5593)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
        at android.view.View.layout(View.java:16697)
        at android.view.ViewGroup.layout(ViewGroup.java:5593)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
        at android.view.View.layout(View.java:16697)
        at android.view.ViewGroup.layout(ViewGroup.java:5593)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
        at android.view.View.layout(View.java:16697)
        at android.view.ViewGroup.layout(ViewGroup.java:5593)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
        at android.view.View.layout(View.java:16697)
        at android.view.ViewGroup.layout(ViewGroup.java:5593)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
        at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2815)
        at android.view.View.layout(View.java:16697)
        at android.view.ViewGroup.layout(ViewGroup.java:5593)
        at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2210)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1951)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1127)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6156)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:892)
        at android.view.Choreographer.doCallbacks(Choreographer.java:704)
        at android.view.Choreographer.doFrame(Choreographer.java:640)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:878)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5619)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:737)
I/Process: Sending signal. PID: 26680 SIG: 9

MathsClass6.java:

package com.example.thinkerlab;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;

import java.util.ArrayList;
import java.util.List;

public class MathsClass6 extends AppCompatActivity {
    RecyclerView recyclerView;
    ChapterAdapter chapterAdapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maths_class6);

        recyclerView=findViewById(R.id.RV1);
        List<ChaptersItem>  list=new ArrayList<>();
        list.add(new ChaptersItem("1. Knowing Our Numbers","4 Tests | 6 Docs | 25 Videos",R.drawable.next));
        list.add(new ChaptersItem("2. Whole Numbers","3 Tests | 6 Docs | 14 Videos",R.drawable.next));
        list.add(new ChaptersItem("3. Playing with Numbers","3 Tests | 7 Docs | 34 Videos",R.drawable.next));
        list.add(new ChaptersItem("4. Basic Geometrical Ideas","3 Tests | 5 Docs | 16 Videos",R.drawable.next));
        list.add(new ChaptersItem("5. Understanding Elementary Shapes","4 Tests | 6 Docs | 25 Videos",R.drawable.next));
        list.add(new ChaptersItem("6. Integers","3 Tests | 4 Docs | 11 Videos",R.drawable.next));
        list.add(new ChaptersItem("7. Fractions","3 Tests | 5 Docs | 19 Videos",R.drawable.next));
        list.add(new ChaptersItem("8. Decimal","4 Tests | 6 Docs | 25 Videos",R.drawable.next));
        list.add(new ChaptersItem("9. Data Handling","4 Tests | 6 Docs | 25 Videos",R.drawable.next));
        list.add(new ChaptersItem("10. Mensuration","4 Tests | 6 Docs | 25 Videos",R.drawable.next));
        list.add(new ChaptersItem("11. Algebra","4 Tests | 6 Docs | 25 Videos",R.drawable.next));
        list.add(new ChaptersItem("12. Ratio and Proportion","4 Tests | 6 Docs | 25 Videos",R.drawable.next));
        list.add(new ChaptersItem("13. Symmetry","4 Tests | 6 Docs | 25 Videos",R.drawable.next));
        list.add(new ChaptersItem("14. Practical Geometry","4 Tests | 6 Docs | 25 Videos",R.drawable.next));
        list.add(new ChaptersItem("15. Topic-Wise Test","26 Docs",R.drawable.next));
        list.add(new ChaptersItem("16. Mock Test","10 Docs",R.drawable.next));
        chapterAdapter= new ChapterAdapter(this,list);
        recyclerView.setAdapter(chapterAdapter);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

    }
}

ChapterAdapter.java:

package com.example.thinkerlab;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

public class ChapterAdapter extends RecyclerView.Adapter<ChapterAdapter.ChapterViewHolder>{
    Context context;
    List<ChaptersItem> list;

    public ChapterAdapter() {
    }

    public ChapterAdapter(MathsClass6 mathsClass6, List<ChaptersItem> list) {
    }

    public ChapterAdapter(List<ChaptersItem> list) {
    }


    @NonNull
    @Override
    public ChapterViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View layout;
        layout= LayoutInflater.from(context).inflate(R.layout.chapters,parent,false);
        return new ChapterViewHolder(layout);
    }

    @Override
    public void onBindViewHolder(@NonNull ChapterViewHolder holder, int position) {
          holder.chapter.setText(list.get(position).getChapter());
        holder.varieties.setText(list.get(position).getVarieties());
        holder.userPhoto.setImageResource(list.get(position).getUserPhoto());
    }

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

    public class ChapterViewHolder extends RecyclerView.ViewHolder{
        TextView chapter, varieties;
        ImageView userPhoto;




        public ChapterViewHolder(View view)
        {
            super(view);
            chapter=view.findViewById(R.id.txt2);
            varieties=view.findViewById(R.id.txt3);
            userPhoto=view.findViewById(R.id.imageView5);

        }
    }
}

ChaptersItem.java:

package com.example.thinkerlab;

public class ChaptersItem {
    String chapter, varieties;
    int userPhoto;

    public ChaptersItem(String chapter, String varieties, int userPhoto) {
        this.chapter = chapter;
        this.varieties = varieties;
        this.userPhoto = userPhoto;
    }

    public ChaptersItem() {
    }

    public String getChapter() {
        return chapter;
    }

    public void setChapter(String chapter) {
        this.chapter = chapter;
    }

    public String getVarieties() {
        return varieties;
    }

    public void setVarieties(String varieties) {
        this.varieties = varieties;
    }

    public int getUserPhoto() {
        return userPhoto;
    }

    public void setUserPhoto(int userPhoto) {
        this.userPhoto = userPhoto;
    }
}

章节.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="#fff"
    android:layout_marginTop="8dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <RelativeLayout
        android:id="@+id/RL1"
        android:paddingBottom="16dp"
        android:layout_width="0dp"
        android:background="@drawable/card_bg"
        android:layout_height="wrap_content"
        android:layout_marginStart="24dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        android:layout_marginLeft="24dp">

        <TextView
            android:id="@+id/txt2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginStart="40dp"
            android:layout_alignParentStart="true"
            android:layout_marginTop="20dp"
            android:text="Chapter"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="40dp" />
        <TextView
            android:lineSpacingExtra="8dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/txt3"
            android:layout_alignStart="@+id/txt2"
            android:layout_marginRight="16dp"
            android:layout_alignLeft="@+id/txt2"
            android:layout_below="@+id/txt2"
            android:text="4 Tests | 8 Docs | 12 Videos"
            android:layout_marginTop="8dp"/>

        <ImageView
            android:id="@+id/imageView5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_marginStart="260dp"
            android:layout_marginLeft="260dp"
            android:layout_marginTop="30dp"
            android:layout_marginEnd="10dp"
            android:layout_marginRight="10dp"
            app:srcCompat="@drawable/next"
            tools:ignore="VectorDrawableCompat" />


    </RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

请帮我解决错误。我被困在这很长一段时间。请帮帮我。

【问题讨论】:

    标签: android list arraylist android-recyclerview


    【解决方案1】:

    修改ChapterAdapter 构造函数以初始化对象变量list。这个变量是 null 在适配器的构造上。

    使用this.list = list,其中构造函数具有list 参数。否则可能使用list = new ArrayList&lt;ChaptersItem&gt;()

    您可能还想检查nulllist 参数,并在这种情况下创建一个新的空列表。

    【讨论】:

      猜你喜欢
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 2016-07-28
      • 2020-08-25
      • 2019-12-20
      • 1970-01-01
      • 2020-01-14
      • 1970-01-01
      相关资源
      最近更新 更多