适配器中getView方法的NullPointerException

androidTag

我正在尝试从SQLite数据库填充ListView。当我滚动到ListView应用程序崩溃,我得到一个NullPointerExceptiongetView()在适配器类。如何解决这个问题?

进入NullPointerException这一行:

holder.txtInIt.setText(followUp_List.getShortRGN());

这是我的适配器代码。

@Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row = convertView;
            final Holder holder;
            if (row == null)
            {
                LayoutInflater vi;
                vi = LayoutInflater.from(getContext());
                row = vi.inflate(R.layout.follow_uplist_item, parent, false);
                holder = new Holder();

                holder.txtInIt = (TextView) row.findViewById(R.id.txtInitialLetter);
                holder.txtUserName = (TextView) row.findViewById(R.id.txt_UserName);
                holder.txtDate = (TextView) row.findViewById(R.id.txt_followDate);
                holder.txtFolloUp = (TextView) row.findViewById(R.id.textFolloup);
            }
            else
            {
                holder = (Holder) row.getTag();
            }

            final FollowUp_List followUp_List = data.get(position);

            holder.txtInIt.setText(followUp_List.getShortRGN());
            if (holder.txtInIt.getText().toString().equals("R"))
            {
                holder.txtInIt.setBackgroundResource(R.drawable.red_circle_shape);
            }
            if (holder.txtInIt.getText().toString().equals("G")) {

                holder.txtInIt.setBackgroundResource(R.drawable.green_circle_shape);
            }
            if (holder.txtInIt.getText().toString().equals("N")) {

                holder.txtInIt.setBackgroundResource(R.drawable.blue_circle_shape);
            }


            holder.txtUserName.setText(followUp_List.getCreatedBy());
            holder.txtDate.setText(followUp_List.getFollowup_date());
            holder.txtFolloUp.setText(followUp_List.getFollowUp());

            return row;

        }

        final class Holder {
            TextView txtInIt;
            TextView txtUserName;
            TextView txtDate;
            TextView txtFolloUp;
        }
    }

这是logcat信息:

10-24 09:54:06.057    5826-5826/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NullPointerException
            at com.example.tazeen.classnkk.FollowUpList$FollowUpListAdapter.getView(FollowUpList.java:299)
            at android.widget.AbsListView.obtainView(AbsListView.java:2012)
            at android.widget.ListView.makeAndAddView(ListView.java:1772)
            at android.widget.ListView.fillDown(ListView.java:672)
            at android.widget.ListView.fillGap(ListView.java:636)
            at android.widget.AbsListView.trackMotionScroll(AbsListView.java:4546)
            at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:2852)
            at android.widget.AbsListView.onTouchEvent(AbsListView.java:3106)
            at android.view.View.dispatchTouchEvent(View.java:5486)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1714)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1728)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1728)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1728)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1728)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1892)
            at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1371)
            at android.app.Activity.dispatchTouchEvent(Activity.java:2364)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1840)
            at android.view.View.dispatchPointerEvent(View.java:5662)
            at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:2863)
            at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4340)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
            at dalvik.system.NativeStart.main(Native Method)
亨利

holder对象为null。因此,例外。因此,如果holder为null,则需要初始化holder

代替if (row == null),使用if (row == null || holder == null)

另外,在您if需要的条件下,您需要添加row.setTag(holder)这很重要,只有这样您才能执行getTag()

因此将是这样的:

            if (row == null || holder == null)
            {
                LayoutInflater vi;
                vi = LayoutInflater.from(getContext());
                row = vi.inflate(R.layout.follow_uplist_item, parent, false);
                holder = new Holder();

                holder.txtInIt = (TextView) row.findViewById(R.id.txtInitialLetter);
                holder.txtUserName = (TextView) row.findViewById(R.id.txt_UserName);
                holder.txtDate = (TextView) row.findViewById(R.id.txt_followDate);
                holder.txtFolloUp = (TextView) row.findViewById(R.id.textFolloup);
                row.setTag(holder);
            }
            else
            {
                holder = (Holder) row.getTag();
            }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Android,适配器的getView中的NullPointerException

自定义适配器的getview中的NullPointerException

适配器 getView() 方法未访问

ANDROID适配器-getView方法处的NullPointerException(行:textView.setText())

getview自定义适配器上的nullpointerexception

CustomView中适配器中的NullPointerException

在适配器中使用getView方法的优化方法

listview项目未在自定义适配器的getview方法中显示分配的值

getView()中的自定义适配器错误

在适配器中获取多个数据单元getView()

自定义适配器getView中的IndexOutOfBounds异常

通过适配器中的getview()删除视图保留

Android:从viewPager中的Fragment调用ListView的适配器的getview()

简单适配器-NullPointerException

NullPointer异常适配器getView

适配器类中的调用方法

自定义ListView适配器中的NullPointerException

自定义视图的适配器中的NullPointerException

从Fragment设置适配器时,CustomListAdapter中的NullPointerException

GridView的getView()方法的自定义适配器未返回正确的内容

getView()如何在自定义适配器中工作?

Android ListView适配器,其中包含getView中的按钮,这些按钮可更改布局

在getView上的自定义适配器中以编程方式添加textviews

通过单击适配器的getView()中的imageView来更改图像

如果条件在自定义适配器中不起作用(getView())

在调试的自定义适配器中未调用Getview,发现位置返回为-1

ListView设置适配器片段nullpointerexception

适配器中的getActivity()

适配器中的ArrayList?