定制适配器导致错误

时间:2014-09-12 05:20:47

标签: android listview adapter custom-adapter android-viewholder

这是获取错误的获取视图。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub  

View vi = convertView;
ViewHolder holder;

    if(convertView == null)
    {
    vi= inflater.inflate(R.layout.selected_user_adapter, null);
    holder =new ViewHolder();`enter code here`
    setDimensions(holder, vi);
    vi.setTag(holder);
    }
    else
        holder = (ViewHolder) vi.getTag();
    Obj obj = listSelected.get(position);

    holder.txtContactName.setText(obj.getuName()); // Error occurs over here

    return vi;
}

这是错误日志..

09-12 10:34:17.555:E / AndroidRuntime(2102):致命异常:主要 09-12 10:34:17.555:E / AndroidRuntime(2102):java.lang.NullPointerException 09-12 10:34:17.555:E / AndroidRuntime(2102):at com.nuance.nmdp.app.chat.SelectedUsersAdapter.getView(SelectedUsersAdapter.java:99) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.widget.AbsListView.obtainView(AbsListView.java:2033) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.widget.ListView.makeAndAddView(ListView.java:1772) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.widget.ListView.fillDown(ListView.java:672) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.widget.ListView.fillFromTop(ListView.java:732) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.widget.ListView.layoutChildren(ListView.java:1625) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.widget.AbsListView.onLayout(AbsListView.java:1863) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.view.View.layout(View.java:11278) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.view.ViewGroup.layout(ViewGroup.java:4224) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.widget.RelativeLayout.onLayout(RelativeLayout.java:925) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.view.View.layout(View.java:11278) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.view.ViewGroup.layout(ViewGroup.java:4224) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.widget.FrameLayout.onLayout(FrameLayout.java:431) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.view.View.layout(View.java:11278) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.view.ViewGroup.layout(ViewGroup.java:4224) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.widget.LinearLayout.lay enter code here outVertical(LinearLayout.java:1486) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.widget.LinearLayout.onLayout(LinearLayout.java:1399) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.view.View.layout(View.java:11278) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.view.ViewGroup.layout(ViewGroup.java:4224) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.widget.FrameLayout.onLayout(FrameLayout.java:431) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.view.View.layout(View.java:11278) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.view.ViewGroup.layout(ViewGroup.java:4224) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1489) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.os.Handler.dispatchMessage(Handler.java:99) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.os.Looper.loop(Looper.java:137) 09-12 10:34:17.555:E / AndroidRuntime(2102):在android.app.ActivityThread.main(ActivityThread.java:4424) 09-12 10:34:17.555:E / AndroidRuntime(2102):at java.lang.reflect.Method.invokeNative(Native Method) 09-12 10:34:17.555:E / AndroidRuntime(2102):at java.lang.reflect.Method.invoke(Method.java:511) 09-12 10:34:17.555:E / AndroidRuntime(2102):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:825) 09-12 10:34:17.555:E / AndroidRuntime(2102):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:592) 09-12 10:34:17.555:E / AndroidRuntime(2102):at dalvik.system.NativeStart.main(Native Method)

当我从列表中取消选中某些数据并且查看结果时显示此错误时会发生此错误。我的持有人无法在tesxt视图上设置结果。如果有人知道解决方案,请帮助。 谢谢。

1 个答案:

答案 0 :(得分:-1)

我解决了我的问题。它与适配器没有关系,经过一整天的调试后,我发现作为回报,我在for循环中的某个时刻得到了空值,所以我使用迭代器只得到那些被选中而不是遍历整个列表的位置它工作得很好。 发生这种情况是因为每次返回我的列表时,所选项目的位置都会发生变化,从而导致出现此问题。