Android 在viewholder上设置textView时出现NullPointerException(非null)

Android 在viewholder上设置textView时出现NullPointerException(非null),android,android-fragments,android-gridview,android-logcat,android-adapter,Android,Android Fragments,Android Gridview,Android Logcat,Android Adapter,我有一个自定义适配器类,在getView中,我遇到了viewholder和设置/访问其元素的问题。当我尝试将textView设置为viewholder时,我始终收到NullPointerException。我已经一步一步地测试了数据并记录了过程,似乎视图设置不正确,或者它试图访问的元素设置不正确?logcat中的前几行显示: 04-13 20:55:13.620: W/dalvikvm(23329): threadid=1: thread exiting with uncaught except

我有一个自定义适配器类,在
getView
中,我遇到了viewholder和设置/访问其元素的问题。当我尝试将
textView
设置为viewholder时,我始终收到
NullPointerException
。我已经一步一步地测试了数据并记录了过程,似乎视图设置不正确,或者它试图访问的元素设置不正确?logcat中的前几行显示:

04-13 20:55:13.620: W/dalvikvm(23329): threadid=1: thread exiting with uncaught exception (group=0x40dd8930)
04-13 20:55:13.644: E/AndroidRuntime(23329): FATAL EXCEPTION: main
04-13 20:55:13.644: E/AndroidRuntime(23329): java.lang.NullPointerException
04-13 20:55:13.644: E/AndroidRuntime(23329):    at com.idealiner.metrosleepuniversal.adapter.LocationModelGridAdapter.getView(LocationModelGridAdapter.java:99)
第99行是当我尝试访问textView元素时:

viewHolder.textView.setText(locationModel.col_line);
我已经测试了
locationModel.col\u line
它不会返回空值。看来,
Viewholder
在某种程度上是无法使用的。。。或者找不到文本视图?我不完全确定

整个getView方法:

    public View getView(int position, View convertView, ViewGroup parent) {

        View       view = convertView;
        ViewHolder viewHolder;

        if (view == null || view.getTag() == null) {

            view = mInflater.inflate(R.layout.grid_view, parent, false);

            viewHolder = new ViewHolder();
//            viewHolder.imageView = (ImageView) view.findViewById(R.id.grid_image);
            viewHolder.textView  = (TextView) view.findViewById(R.id.grid_label);
            view.setTag(viewHolder);

            Log.v("GetViewAdapter", "View is null, setup viewholder");

        }else {

            viewHolder = (ViewHolder) view.getTag();
            Log.v("GetViewAdapter", "View is not null, setup viewholder");

        }

        lineModel locationModel = mLine[position];

        Log.v("GetViewAdapter", "mline has a position of: " + position);
        Log.v("GetViewAdapter", "mline has a name of: " + locationModel.col_line);

        if(locationModel!=null) {

            viewHolder.textView.setText(locationModel.col_line);
        }

        return view;
    }
该类的其余代码可在此处找到:


我一整天都在讨论这个问题,所以任何建议/提示都将不胜感激!谢谢。

我不知道它是否能解决您的问题,但看看定义

view.findViewById(R.id.grid_label)
查找具有给定id的子视图。如果此视图具有给定id,则返回此视图

除非您是舒尔,否则要重用的视图是
R.id.grid\u标签

文本视图只能显示“字符串”或“字符序列”


所以,试试这个
viewHolder.textView.setText((location.col_line.toString())

正如@Ted hopp所说,textView是空的,因为我将错误的布局作为viewholder,而viewholder中没有textView


谢谢你的帮助

您正在检查
locationModel
是否为
null
。您还应该检查
viewHolder.textView
是否为
null
。记录一个诊断(或插入一个条件断点)以捕获它们所在的情况。可能是初始化视图标记时找不到id为
grid\u label
的视图。我将尝试此操作!谢谢你的建议。所以我已经进行了一些检查和调试,它显示viewholder继承了textview,但随后显示textview为null。如果您的视图不包含id为“
grid\u label”的视图,那么
textview
将是
null
。也许您应该发布grid_view.xml的源代码。。。就是这样。唉,我把grid_view.xml和grid_layout.xml搞混了,它在另一个地方。一直以来。。。非常感谢。