androd的自定义Adapter中的NullPointerException

来源:互联网 发布:网络系统解决方案 编辑:程序博客网 时间:2024/06/07 11:55

错误信息如下

E/AndroidRuntime: FATAL EXCEPTION: main

                  Process: com.example.carry.myapplication, PID: 15297
                  java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference
                      at com.example.carry.myapplication.MyAdapter.getView(MyAdapter.java:64)
                      at android.widget.AbsListView.obtainView(AbsListView.java:2363)
                      at android.widget.ListView.measureHeightOfChildren(ListView.java:1326)
                      at android.widget.ListView.onMeasure(ListView.java:1233)
                      at android.view.View.measure(View.java:19857)
                      at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
                      at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
                      at android.view.View.measure(View.java:19857)
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
                      at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
                      at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
                      at android.view.View.measure(View.java:19857)
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
                      at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:393)
                      at android.view.View.measure(View.java:19857)
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
                      at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
                      at android.view.View.measure(View.java:19857)
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
                      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
                      at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
                      at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
                      at android.view.View.measure(View.java:19857)
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
                      at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
                      at com.android.internal.policy.DecorView.onMeasure(DecorView.java:689)
                      at android.view.View.measure(View.java:19857)
                      at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2275)
                      at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1366)
                      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1619)
                      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)
                      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6337)
                      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
                      at android.view.Choreographer.doCallbacks(Choreographer.java:686)
                      at android.view.Choreographer.doFrame(Choreographer.java:621)
                      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
                      at android.os.Handler.handleCallback(Handler.java:751)
                      at android.os.Handler.dispatchMessage(Handler.java:95)
                      at android.os.Looper.loop(Looper.java:154)
                      at android.app.ActivityThread.main(ActivityThread.java:6119)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)

                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)


解决办法,是因为没有正确反射对应的xml,

错误前

public View getView(int position, View convertView, ViewGroup parent) {    ViewHolder vh=null;    if(convertView==null){              vh=new ViewHolder();        convertView=inflater.inflate(R.layout.Third_Activity,null);        vh.logo=(ImageView)convertView.findViewById(R.id.logo);        vh.ttl=(TextView)convertView.findViewById(R.id.ttl);        vh.version=(TextView)convertView.findViewById(R.id.version);        vh.size=(TextView)convertView.findViewById(R.id.size);        convertView.setTag(vh);    }else{        vh=(ViewHolder)convertView.getTag();     }    vh.logo.setImageResource((Integer)dataList.get(position).get("logo"));    vh.ttl.setText((String)dataList.get(position).get("ttl"));    vh.version.setText((String)dataList.get(position).get("version"));    vh.size.setText((String)dataList.get(position).get("size"));    return convertView; }
修改后
public View getView(int position, View convertView, ViewGroup parent) {    ViewHolder vh=null;    if(convertView==null){                vh=new ViewHolder();        convertView=inflater.inflate(R.layout.items,null);        vh.logo=(ImageView)convertView.findViewById(R.id.logo);        vh.ttl=(TextView)convertView.findViewById(R.id.ttl);        vh.version=(TextView)convertView.findViewById(R.id.version);        vh.size=(TextView)convertView.findViewById(R.id.size);        convertView.setTag(vh);    }else{        vh=(ViewHolder)convertView.getTag();    }     vh.logo.setImageResource((Integer)dataList.get(position).get("logo"));    vh.ttl.setText((String)dataList.get(position).get("ttl"));    vh.version.setText((String)dataList.get(position).get("version"));    vh.size.setText((String)dataList.get(position).get("size"));    return convertView;  }

原创粉丝点击