适配器抛出java.lang.NullPointerException

我遇到以下错误:

  

java.lang.NullPointerException:尝试调用接口方法   空对象引用上的'java.lang.Object java.util.List.get(int)'   在   com.example.steblinatetiana.lesson02.SportAdapter.onBindViewHolder(SportAdapter.java:66)   在com.example.steblinatetian

这是我的代码:

public class SportAdapter extends Adapter<BaseViewHolder> {

    private static OnItemClicklistener clicklistener;
    private LayoutInflater inflater;
    private List<Sport> sports;

    public SportAdapter(Context context,List<Sport> sports) {
        this.inflater = LayoutInflater.from(context);
        this.sports = sports;
    }

    static void setOnClicklistener(Mainactivity mainactivity) {
    }

    @NonNull
    @Override
    public BaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
        return new BaseViewHolder(inflater,parent);

    }


    @Override
    public void onBindViewHolder(BaseViewHolder holder,final int position) {
        final Sport sport = sports.get(position);
        holder.bind(sport);

        SportInfoFragment sportInfoFragment = new SportInfoFragment();
        Bundle bundle = new Bundle();
        bundle.putString("sport",String.valueOf(sport));
        sportInfoFragment.setarguments(bundle);


        holder.itemView.setOnClicklistener(new View.OnClicklistener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(view.getcontext(),Infoactivity.class);
                if (view.getcontext().getResources() != null) {
                    intent.putExtra("sport",sport);
                }
                view.getcontext().startactivity(intent);
            }

        });
    }

    @Override
    public int getItemCount() {
        return 20 ;
    }


    public OnItemClicklistener getclicklistener() {
        return clicklistener;
    }

    public LayoutInflater getInflater() {
        return inflater;
    }

    public void setInflater(LayoutInflater inflater) {
        this.inflater = inflater;
    }


    void setOnClicklistener(OnItemClicklistener itemClicklistener) {
        clicklistener = itemClicklistener;

    }
}

如何解决此错误?

to71229 回答:适配器抛出java.lang.NullPointerException

在将其放入适配器之前,必须确保您的列表不为空。为此,请确保在构造函数中添加@NonNull注释。

public SportAdapter(Context context,@NonNull List<Sport> sports) {
    this.inflater = LayoutInflater.from(context);
    this.sports = sports;
}

您在getItems方法中也犯了一些错误。更改为此。

@Override
public int getItemCount() {
    return sports.getSize();
}
,

看起来您的运动清单为空。您可以这样做避免

public SportAdapter(Context context,List<Sport> sports) {
   this.inflater = LayoutInflater.from(context);
   this.sports = Objects.requireNonNull(sports);
}

您的应用仍会崩溃,但至少您会确切知道原因

本文链接:https://www.f2er.com/3122810.html

大家都在问