[运行我的应用程序时,我得到一个NullPointerExeption,但我正在努力修复它[重复]

问题描述 投票:0回答:2
我正在创建一个允许订购食物的应用。她是我的代码:

//MyFoodListAdapter.java package com.georgettemillimo.fudiapp.Adapter; 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 com.bumptech.glide.Glide; import com.georgettemillimo.fudiapp.Model.FoodModel; import com.georgettemillimo.fudiapp.R; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; public class MyFoodListAdapter extends RecyclerView.Adapter<MyFoodListAdapter.MyViewHolder> { private Context context; private List <FoodModel> foodModelList; public MyFoodListAdapter(Context context, List<FoodModel> foodModelList) { this.context = context; this.foodModelList = foodModelList; } @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { return new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.layout_food_item,parent,false)); } @Override public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { Glide.with(context).load(foodModelList.get(position).getImage()).into(holder.imgs_food_image); holder.txts_food_name.setText(new StringBuilder("").append(foodModelList.get(position).getName())); holder.txts_food_price.setText(new StringBuilder("Ksh").append(foodModelList.get(position).getPrice())); } @Override public int getItemCount() { return foodModelList.size(); } public class MyViewHolder extends RecyclerView.ViewHolder{ private Unbinder unbinder; @BindView(R.id.txt_food_name) TextView txts_food_name; @BindView(R.id.txt_food_price) TextView txts_food_price; @BindView(R.id.img_food_image) ImageView imgs_food_image; @BindView(R.id.img_fav) ImageView img_fav; @BindView(R.id.img_quick_cart) ImageView img_quick_cart; public MyViewHolder(@NonNull View itemView) { super(itemView); unbinder = ButterKnife.bind(this,itemView); } } }

当我运行该应用程序时,它崩溃并在Logcat上显示以下错误

//Error on LOGCAT No adapter attached; skipping layout No adapter attached; skipping layout No adapter attached; skipping layout No adapter attached; skipping layout FATAL EXCEPTION: main Process: com.georgettemillimo.fudiapp, PID: 4562 java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference at com.georgettemillimo.fudiapp.Adapter.MyFoodListAdapter.getItemCount(MyFoodListAdapter.java:56) 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:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1076) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) at android.widget.FrameLayout.onLayout(FrameLayout.java:514) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1915) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:148) at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43) at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1892) at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at androidx.drawerlayout.widget.DrawerLayout.onLayout(DrawerLayout.java:1231) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) at android.widget.FrameLayout.onLayout(FrameLayout.java:514) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) at android.widget.FrameLayout.onLayout(FrameLayout.java:514) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) at android.widget.FrameLayout.onLayout(FrameLayout.java:514) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2110) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1867) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1085) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5909) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) at android.view.Choreographer.doCallbacks(Choreographer.java:580) at android.view.Choreographer.doFrame(Choreographer.java:550) at android.view.Choreographer FrameDisplayEventReceiver.run(Choreographer.java:753) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5293) at java.lang.reflec

[当我尝试调用方法getItemCount来显示食物详细信息时,应用程序崩溃,并显示消息。我找不到错误,我的FoodModel刚刚被初始化好。我不确定麻烦在哪里。请帮助。
java android android-recyclerview nullpointerexception
2个回答
0
投票
getItemCount中的MyFoodListAdapter.java功能修改为:

@Override public int getItemCount() { return foodModelList!=null?foodModelList.size():0; }

因此,如果在调用getItemCount时列表为空,则它将返回0。

0
投票
您的列表必须初始化。

private List <FoodModel> foodModelList = new ArrayList();

如果不初始化列表,则在调用getItemCount()时,它将尝试调用空对象的方法。

要么在其声明上初始化它,要么确保在调用构造函数时不传递null。

© www.soinside.com 2019 - 2024. All rights reserved.