如何解决自定义列表中的空指针异常



这是我CustomList

自定义列表:

public class CustomList extends ArrayAdapter<String> {
private final Activity context;
private final String[] web;
private final Integer[] imageId;
public CustomList(Activity context,String[] web, Integer[] imageId) {
    super(context, R.layout.single_row, web);
    this.context = context;
    this.web = web;
    this.imageId = imageId;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
    LayoutInflater inflater = context.getLayoutInflater();
    View rowView= inflater.inflate(R.layout.single_row, null, true);
    TextView txtTitle = (TextView) rowView.findViewById(R.id.txt);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.img);
    txtTitle.setText(web[position]);
    imageView.setImageResource(imageId[position]);
    return rowView;
  }
}

这是我的imageId数组,通过如下所示while循环填充它

while(crs.moveToNext()){          
String img = crs.getString(crs.getColumnIndex("Icon"));
try 
{
    imageId[i] = Integer.parseInt(img);
}
 catch(NumberFormatException nfe) {}
 i++;
}

但是当我运行它时,我看到我的CustomList错误,在我的课程结束后我的行上说错误

imageView.setImageResource(imageId[position]);

日志猫 :

        2021-2021/com.exercise.AndroidHTML E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.NullPointerException
        at com.exercise.AndroidHTML.CustomList.getView(CustomList.java:35)
        at android.widget.AbsListView.obtainView(AbsListView.java:2177)
        at android.widget.ListView.measureHeightOfChildren(ListView.java:1247)
        at android.widget.ListView.onMeasure(ListView.java:1159)
        at android.view.View.measure(View.java:15848)
        at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728)
        at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:477)
        at android.view.View.measure(View.java:15848)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
        at android.view.View.measure(View.java:15848)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
        at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:302)
        at android.view.View.measure(View.java:15848)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2189)
        at android.view.View.measure(View.java:15848)
        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1905)
        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1284)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
        at android.view.Choreographer.doCallbacks(Choreographer.java:562)
        at android.view.Choreographer.doFrame(Choreographer.java:532)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
        at android.os.Handler.handleCallback(Handler.java:730)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5103)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)

似乎imageViewimageId null.请仔细检查您是否正确设置了imageId值,以及single_row布局是否具有img id 的ImageView

最新更新