TextView with custom styling throwing weird inflate exception

I am working on an android project and am creating my own list view. The list view contains multiple views of the text and I am creating a style for my text view so I don't have to repeat the same style over and over.

Below is my layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView android:id="@+id/txtFirstOccurred"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        style="@style/CrashGroup"/>

    <TextView android:id="@+id/txtLastOccurred"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        style="@style/CrashGroup"/>
</LinearLayout>

      

Below is my style for my textview

<style name="CrashGroup">
        <item name="android:singleLine">false</item>
        <item name="android:textSize">@android:style/TextAppearance.Small</item>
        <item name="android:gravity">center_vertical</item>
    </style>

      

Below is how I inflate my XML so that it appears in my list.

@Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        try
        {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.android_crash_group_layout, null);

            TextView txtFirstOccurred = (TextView)convertView.findViewById(R.id.txtFirstOccurred);
            txtFirstOccurred.setText(getItem(position).getFirstOccurred());

            TextView txtLastOccurred = (TextView)convertView.findViewById(R.id.txtLastOccurred);
            txtLastOccurred.setText(getItem(position).getLastOccurred());


            return convertView;
        }
        catch (Exception ex)
        {
            Log.e(TAG, ex.toString());
            return null;
        }
    }

      

I get an error:

Process: com.BoardiesITSolutions.CritiMonApp, PID: 1451 java.lang.NullPointerException: Attempting to call virtual int method android.view.View.getImportantForAccessibility () to reference an empty object in android.widget.AbsListView.obtainView (AbsListView. Java: 2360 ) in android.widget.ListView.makeAndAddView (ListView.java:1864) in android.widget.ListView.fillDown (ListView.java:698) in android.widget.ListView.fillFromTop (ListView.java:759) in android.widget .ListView.layoutChildren (ListView.java:1673) in android.widget.AbsListView.onLayout (AbsListView.java:2148) in android.view.View.layout (View.java:15596) in android.view.ViewGroup.layout ( ViewGroup.java:4966) to android.widget.LinearLayout.setChildFrame (LinearLayout.java:1703) to android.widget.LinearLayout.layoutVertical (LinearLayout.java:1557) to android.widget.LinearLoutout.Linearout.line Java:1466) on android.view.View.layout (View.java:15596) on android.view.ViewGroup.layout (ViewGroup.java:4966) on android.widget.LinearLayout.se tChildFrame (LinearLayout.java:1703) on android .widget.LinearLayout.layoutVertical (LinearLayout.java:1557) at android.widget.LinearLayout.onLayout (LinearLayout.java:1466) at android.view.View.View.layout (View: 15596) at android.view.ViewGroup. layout (ViewGroup.java:4966) on android.widget.FrameLayout.layoutChildren (FrameLayout.java:573) on android.widget.FrameLayout.onLayout (FrameLayout.java:508) on android .view.View.layout (View.java : 15596) on android.view.ViewGroup.layout (ViewGroup.java:4966) on android.widget.FrameLayout.layoutChildren (FrameLayout.java:573) on android.widget.FrameLayout. onLayout (FrameLayout.java:508) on android.view.View.layout (View.java:15596) on android.view.ViewGroup.layout (ViewGroup.java:4966) on android.widget.LinearLayout.setChildFrame (LinearLayout.java): 1703) on android.widget.LinearLayout.layoutVertical (LinearLayout.java:1557) on android.widget.LinearLayout.onLayout. (LinearLayout. java: 1466) to android.view.View.layout (View.java:15596) to android.view.ViewGroup.lay out (ViewGroup.java:4966) to android.support.v4.widget.DrawerLayout.onLayout (DrawerLayout. java: 890) to android.view.View.layout (View.java:15596) to android.view.ViewGroup.layout (ViewGroup.java:4966) to android.widget.FrameLayout.layoutChildren (FrameLayout.java:573) to android.widget.FrameLayout.onLayout (FrameLayout.java:508) on android.view.View.layout (View.java: 15596) on android.view.ViewGroup.layout (ViewGroup.java:4966) on android.widget.FrameLayout .layoutChildren (FrameLayout.java:573) on android.widget.FrameLayout.onLayout (FrameLayout.java:508) on android. view.View.layout (View.java:15596) on android.view.ViewGroup.layout (ViewGroup.java:4966) on android.widget.FrameLayout.layoutChildren (FrameLayout.java:573) on android.widget.FrameLayout.onLayout (FrameLayout.java:508) on android.view.View.layout (View.java:15596) on android.view.ViewGroup.layout (ViewGroup.java:4966) on android.widget.LinearLayout.setChildFrame (LinearLayout.java: 1703) to android.widget.LinearLayout.layoutVertical (Linear Layout.java:1557) to android.widget.LinearLayout.onLayout (LinearLayout.java:1466) to android.view.View.layout (View.java:15596) to android .view.ViewGroup.layout (ViewGroup.java:4966)) in android.widget.FrameLayout.layoutChildren (FrameLayout.java:573) in android.widget.FrameLayout.onLayout (FrameLayout.java:508) in android.view.View .layout (View.java:15596) in android.view.ViewGroup.layout (ViewGroup.java:4966) in android.view.ViewRootImpl.performLayout (ViewRootImpl.java:2072) in android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1829) in android.view.l.Trao ViewRootImpl.java:1054) in android.view .ViewRootImpl $ TraversalRunnable.run (ViewRootImpl.java:5779) on android.view.Choreographer $ CallbackRecord.run (Choreographer.java:767) on android.rapogsherreCherre.java: 580) on android.view.Choreographer.doFrame (Choreographer.doFrame (Choreographer.doFrame) java: 550) to android.view.Choreographer $ FrameDisplayEventReceiver.run (Choreographer .java: 753)767) on android.rapogsherreCherre.java: 580) on android.view.Choreographer.doFrame (Choreographer.java:550) on android.view.Choreographer $ FrameDisplayEventReceiver.run (Choreographer .java: 753)767) on android.rapogsherreCherre.java: 580) on android.view.Choreographer.doFrame (Choreographer.java:550) on android.view.Choreographer $ FrameDisplayEventReceiver.run (Choreographer .java: 753)

It seems to have something to do with the style, as if I am removing this style attribute from the text views, it seems to work fine.

+4


source to share


2 answers


I think the one that convertView

you return is null

from time to time because the conversionView handling is tricky.

Make sure you have a value. You can use smth like:



 @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    TextView text = null;

    if (convertView == null) {
      convertView = inflater.inflate(R.layout.listrow_details, null);
    }

    text = (TextView) convertView.findViewById(R.id.textView1);
    text.setText(children);

    return convertView;
  }

      

Hope it helps.

+3


source


android: textSize Should be a size value. Change your style like this:



<style name="CrashGroup" parent="@android:style/TextAppearance.Small">
        <item name="android:singleLine">false</item>
        <item name="android:gravity">center_vertical</item>
    </style>

      

0


source







All Articles