Android listview到达列表末尾时出错/崩溃

Android listview到达列表末尾时出错/崩溃,android,listview,android-listview,runtime-error,android-resources,Android,Listview,Android Listview,Runtime Error,Android Resources,我的应用程序出现错误,当我到达listview的末尾时,它崩溃了。不确定是什么原因导致此问题以及如何解决此问题。我使用光标填充我的listview。这是我用来填充listview的代码: 错误: 11-15 12:45:22.446: E/AndroidRuntime(276): FATAL EXCEPTION: main 11-15 12:45:22.446: E/AndroidRuntime(276): java.lang.NullPointerException 11-15 12:45:

我的应用程序出现错误,当我到达listview的末尾时,它崩溃了。不确定是什么原因导致此问题以及如何解决此问题。我使用光标填充我的listview。这是我用来填充listview的代码:

错误:

11-15 12:45:22.446: E/AndroidRuntime(276): FATAL EXCEPTION: main
11-15 12:45:22.446: E/AndroidRuntime(276): java.lang.NullPointerException
11-15 12:45:22.446: E/AndroidRuntime(276):  at android.content.res.AssetManager.getResourceIdentifier(Native Method)
11-15 12:45:22.446: E/AndroidRuntime(276):  at android.content.res.Resources.getIdentifier(Resources.java:1422)
11-15 12:45:22.446: E/AndroidRuntime(276):  at com.example.yao.zCustomUsersAdapter.getView(zCustomUsersAdapter.java:62)
11-15 12:45:22.446: E/AndroidRuntime(276):  at android.widget.AbsListView.obtainView(AbsListView.java:1294)
11-15 12:45:22.446: E/AndroidRuntime(276):  at android.widget.ListView.makeAndAddView(ListView.java:1727)
11-15 12:45:22.446: E/AndroidRuntime(276):  at android.widget.ListView.fillDown(ListView.java:652)
11-15 12:45:22.446: E/AndroidRuntime(276):  at android.widget.ListView.fillGap(ListView.java:623)
11-15 12:45:22.446: E/AndroidRuntime(276):  at android.widget.AbsListView.trackMotionScroll(AbsListView.java:2944)
11-15 12:45:22.446: E/AndroidRuntime(276):  at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:2485)
11-15 12:45:22.446: E/AndroidRuntime(276):  at android.os.Handler.handleCallback(Handler.java:587)
11-15 12:45:22.446: E/AndroidRuntime(276):  at android.os.Handler.dispatchMessage(Handler.java:92)
11-15 12:45:22.446: E/AndroidRuntime(276):  at android.os.Looper.loop(Looper.java:123)
11-15 12:45:22.446: E/AndroidRuntime(276):  at android.app.ActivityThread.main(ActivityThread.java:4627)
11-15 12:45:22.446: E/AndroidRuntime(276):  at java.lang.reflect.Method.invokeNative(Native Method)
11-15 12:45:22.446: E/AndroidRuntime(276):  at java.lang.reflect.Method.invoke(Method.java:521)
11-15 12:45:22.446: E/AndroidRuntime(276):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-15 12:45:22.446: E/AndroidRuntime(276):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-15 12:45:22.446: E/AndroidRuntime(276):  at dalvik.system.NativeStart.main(Native Method)

对String.valueOf方法进行NullPointer检查

比如:-

package com.example.yao;

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

  import android.content.Context;
  import android.graphics.drawable.Drawable;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.ArrayAdapter;
  import android.widget.ImageView;
  import android.widget.TextView;

  public class zCustomUsersAdapter extends ArrayAdapter<YAOYVD> {

      public zCustomUsersAdapter(Context context, List<YAOYVD> users) {
          super(context, 0, users);

       }

       @Override
       public View getView(int position, View convertView, ViewGroup parent) {
          // Get the data item for this position
         // User user = getItem(position);
           YAOYVD user = getItem(position); 
          // Check if an existing view is being reused, otherwise inflate the view
          if (convertView == null) {
             convertView = LayoutInflater.from(getContext()).inflate(R.layout.zitem_user, parent, false);
          }
          // Lookup view for data population
          TextView tvName = (TextView) convertView.findViewById(R.id.tvName);
          TextView tvHome = (TextView) convertView.findViewById(R.id.tvHometown);

          ImageView tvImage = (ImageView) convertView.findViewById(R.id.ivUserIcon);
          // Populate the data into the template view using the data object
          tvName.setText(user.getID_YAO()!=null ? String.valueOf(user.getID_YAO()): null);
                //.name);
          tvHome.setText(user.getID_YAO() != null ? String.valueOf(user.getID_YAO()):         null);
          //.hometown);

          if(user.getSPIC_YAO() != null{
                 tvImage.setBackgroundResource(user.getSPIC_YAO()); 
          }

         return convertView;
     }
}
package com.example.yao;
导入java.util.ArrayList;
导入java.util.List;
导入android.content.Context;
导入android.graphics.drawable.drawable;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.TextView;
公共类zCustomUsersAdapter扩展了ArrayAdapter{
公共zCustomUsersAdapter(上下文,列表用户){
超级(上下文,0,用户);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//获取此职位的数据项
//用户=获取项目(位置);
YAYVD user=getItem(位置);
//检查是否正在重用现有视图,否则会膨胀视图
if(convertView==null){
convertView=LayoutInflater.from(getContext()).flate(R.layout.zitem_user,parent,false);
}
//数据填充的查找视图
TextView-tvName=(TextView)convertView.findViewById(R.id.tvName);
TextView tvHome=(TextView)convertView.findViewById(R.id.tvHome);
ImageView tImage=(ImageView)convertView.findViewById(R.id.ivUserIcon);
//使用数据对象将数据填充到模板视图中
tvName.setText(user.getID_-YAO()!=null?String.valueOf(user.getID_-YAO()):null);
//(姓名);
tvHome.setText(user.getID_-YAO()!=null?String.valueOf(user.getID_-YAO()):null);
//(八)家乡;;
if(user.getSPIC_YAO()!=null{
setBackgroundResource(user.getSPIC_-YAO());
}
返回视图;
}
}
问题可能是字符串值变为null或后台资源id错误。
最好对值进行适当的检查。

zCustomUsersAdapter.java的第62行是什么?这里有一个NPE。zcustomuseradapter是我创建自定义listview(其中包含一个imageview和两个textview)的类这个类将把我数据库中的值分配给imageview和textview。感谢这一帮助。我注意到,如果我取出imageview,Listview可以找到。然后,我再次添加imageview,查看图像是否存在。有一些存在,但其他不存在。我添加了以下语法:Context ctx=getContext();int resId=ctx.getResources().getIdentifier(user.getSPIC_-YAO(),“drawable”,ctx.getPackageName());if(resId!=0){tvmimage.setBackgroundResource(resId);}else{tvmimage.setImageResource(R.drawable.a4);//如果resId为0,则替换图像,但它会一直崩溃。然后,我添加了“if(file.exist)”但它仍然崩溃。我想补充的是,从数据库传递到imageview的图像(spic)值有一些空值。我回到数据库并添加了一些空值。现在正在工作,不会崩溃。谢谢。