0

I am struggling with this error: I created a custom array Adapter, and I have a null pointer exception on the getView method when I try to access a textview that I initialised with findviewbyid:

  private class MarkerArrayAdapter extends ArrayAdapter<MarkerWrapper> {
    private ArrayList<MarkerWrapper> markerList;

    public MarkerArrayAdapter(Context context, int textViewResourceId,
            ArrayList<MarkerWrapper> markersList) {
        super(context, textViewResourceId, markersList);
        this.markerList = markersList;
    }

    private class ViewHolder {
        TextView ID_marker;
        TextView chr;
        TextView position;
        TextView risk_allele;
        TextView ref_allele;
        TextView genome_patient;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        // Log.v("ConvertView", String.valueOf(position));

        if (convertView == null) {
            LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = vi.inflate(R.layout.raw_data_item, null);

            holder = new ViewHolder();
            holder.ID_marker = (TextView) findViewById(R.id.raw_data_report_textview_1);
            holder.chr = (TextView) findViewById(R.id.raw_data_report_textview_2);
            holder.position = (TextView) findViewById(R.id.raw_data_report_textview_3);
            holder.risk_allele = (TextView) findViewById(R.id.raw_data_report_textview_4);
            holder.ref_allele = (TextView) findViewById(R.id.raw_data_report_textview_5);
            holder.genome_patient = (TextView) findViewById(R.id.raw_data_report_textview_6);
            convertView.setTag(holder);

        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        MarkerWrapper marker = markerList.get(position);

        //NullPointer on this line
        holder.ID_marker.setText(marker.getID_marker());
        holder.chr.setText(marker.getChr());
        holder.position.setText(marker.getPosition());
        holder.risk_allele.setText(marker.getRisk_allele());
        holder.ref_allele.setText(marker.getRef_allele());
        holder.genome_patient.setText(marker.getGenome_patient());

        return convertView;

    }

} 

My raw_data_item.xml looks like this:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="6dip" >

<TextView
    android:id="@+id/raw_data_report_textview_1"
    android:layout_width="22dp"
    android:layout_height="fill_parent"
    android:layout_weight="0.90"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/raw_data_report_textview_2"
    android:layout_width="14dp"
    android:layout_height="fill_parent"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/raw_data_report_textview_3"
    android:layout_width="38dp"
    android:layout_height="fill_parent"
    android:layout_weight="0.35"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/raw_data_report_textview_4"
    android:layout_width="36dp"
    android:layout_height="fill_parent"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/raw_data_report_textview_5"
    android:layout_width="44dp"
    android:layout_height="fill_parent"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/raw_data_report_textview_6"
    android:layout_width="85dp"
    android:layout_height="fill_parent"
    android:textAppearance="?android:attr/textAppearanceSmall" />

I saw a lot of people having the same probleme, but none of their's answer worked for me, so I would really appreciate your help.

04-19 11:05:03.657: E/AndroidRuntime(2229): FATAL EXCEPTION: main
04-19 11:05:03.657: E/AndroidRuntime(2229): Process:  PID: 2229
04-19 11:05:03.657: E/AndroidRuntime(2229): java.lang.NullPointerException:                     Attempt to invoke virtual method 'void     android.widget.TextView.setText(java.lang.CharSequence)' on a null object     reference
04-19 11:05:03.657: E/AndroidRuntime(2229):     at RawDataReportActivity$MarkerArrayAdapter.getView(RawDataReportActivity.java:162)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.widget.AbsListView.obtainView(AbsListView.java:2842)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.widget.ListView.makeAndAddView(ListView.java:1884)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.widget.ListView.fillDown(ListView.java:713)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.widget.ListView.fillFromTop(ListView.java:779)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.widget.ListView.layoutChildren(ListView.java:1693)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.widget.AbsListView.onLayout(AbsListView.java:2632)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.View.layout(View.java:16550)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.ViewGroup.layout(ViewGroup.java:5303)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:2102)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1956)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1865)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.View.layout(View.java:16550)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.ViewGroup.layout(ViewGroup.java:5303)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.View.layout(View.java:16550)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.ViewGroup.layout(ViewGroup.java:5303)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:801)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.View.layout(View.java:16550)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.ViewGroup.layout(ViewGroup.java:5303)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.View.layout(View.java:16550)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.ViewGroup.layout(ViewGroup.java:5303)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:494)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.View.layout(View.java:16550)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.ViewGroup.layout(ViewGroup.java:5303)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.View.layout(View.java:16550)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.ViewGroup.layout(ViewGroup.java:5303)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2308)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2021)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1180)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6558)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.Choreographer.doCallbacks(Choreographer.java:590)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.Choreographer.doFrame(Choreographer.java:560)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.os.Handler.handleCallback(Handler.java:739)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.os.Handler.dispatchMessage(Handler.java:95)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.os.Looper.loop(Looper.java:145)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at android.app.ActivityThread.main(ActivityThread.java:5832)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at java.lang.reflect.Method.invoke(Native Method)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at java.lang.reflect.Method.invoke(Method.java:372)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
04-19 11:05:03.657: E/AndroidRuntime(2229):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
2
  • 1
    Show me more about the error logs. Commented Apr 19, 2015 at 8:54
  • @bwat, i updated my answer, please check it. Commented Apr 19, 2015 at 9:11

2 Answers 2

1

I think you are not calling findViewById on the convertView.I think your if loop should be like below

if (convertView == null) {
        LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = vi.inflate(R.layout.raw_data_item, null);

        holder = new ViewHolder();
        holder.ID_marker = (TextView) convertView.findViewById(R.id.raw_data_report_textview_1);
        holder.chr = (TextView) convertView.findViewById(R.id.raw_data_report_textview_2);
        holder.position = (TextView) convertView.findViewById(R.id.raw_data_report_textview_3);
        holder.risk_allele = (TextView) convertView.findViewById(R.id.raw_data_report_textview_4);
        holder.ref_allele = (TextView) convertView.findViewById(R.id.raw_data_report_textview_5);
        holder.genome_patient = (TextView) convertView.findViewById(R.id.raw_data_report_textview_6);
        convertView.setTag(holder);

    }

I think you have written this class inside an activity, so you are trying to find those views inside activity layout.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks a lot mate, I would have never found that !
0

You must added convertview.findViewById(.... )

 holder.ID_marker = (TextView) convertView.findViewById(R.id.raw_data_report_textview_1);
            holder.chr = (TextView) convertView.findViewById(R.id.raw_data_report_textview_2);
            holder.position = (TextView) convertView.findViewById(R.id.raw_data_report_textview_3);
            holder.risk_allele = (TextView) convertView.findViewById(R.id.raw_data_report_textview_4);
            holder.ref_allele = (TextView) convertView.findViewById(R.id.raw_data_report_textview_5);
            holder.genome_patient = (TextView) convertView.findViewById(R.id.raw_data_report_textview_6);

Good Luck there

1 Comment

I did what you asked, and still the same error: 04-19 11:05:03.657: E/AndroidRuntime(2229): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.