2016-11-15 21 views
0

以下是我getChildView方法擴大的Expandablelistview崩潰的應用程序

@Override 
    public View getChildView(int groupPosition, final int childPosition, 
          boolean isLastChild, View convertView, ViewGroup parent) { 

     final String childText = (String) getChild(groupPosition, childPosition); 

     if (convertView == null) { 
      LayoutInflater infalInflater = (LayoutInflater) this._context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = infalInflater.inflate(R.layout.list_item, null); 
     } 

     TextView txtListChild = (TextView) convertView 
       .findViewById(R.id.lblListItem); 

     txtListChild.setText(childText); 
     return convertView; 
    } 

以下是我getGroupView方法

@Override 
    public View getGroupView(int groupPosition, boolean isExpanded, 
          View convertView, ViewGroup parent) { 
     String headerTitle = (String) getGroup(groupPosition); 

     if (convertView == null) { 
      LayoutInflater infalInflater = (LayoutInflater) this._context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = infalInflater.inflate(R.layout.assignee_list_group, null); 
     } 

     TextView lblListHeader = (TextView) convertView 
       .findViewById(R.id.lblListHeader); 
     lblListHeader.setTypeface(null, Typeface.BOLD); 
     lblListHeader.setText(headerTitle); 

     if (isExpanded) { 
      ImageView img_indicator = (ImageView) convertView 
        .findViewById(R.id.indicator_list); 

      img_indicator.setImageResource(R.drawable.circle_arrowdown); 
     } else { 
      ImageView img_indicator = (ImageView) convertView 
        .findViewById(R.id.indicator_list); 
      img_indicator.setImageResource(R.drawable.circle_arrow); 
     } 
     return convertView; 
    } 

即時得到下面的錯誤,

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setBounds(android.graphics.Rect)' on a null object reference 
                    at android.widget.ExpandableListView.drawDivider(ExpandableListView.java:537) 
                    at android.widget.ListView.dispatchDraw(ListView.java:3313) 
                    at android.widget.ExpandableListView.dispatchDraw(ExpandableListView.java:356) 
                    at android.view.View.draw(View.java:15125) 
                    at android.widget.AbsListView.draw(AbsListView.java:4250) 
                    at android.view.View.updateDisplayListIfDirty(View.java:14056) 
                    at android.view.View.getDisplayList(View.java:14079) 
                    at android.view.View.draw(View.java:14846) 
                    at android.view.ViewGroup.drawChild(ViewGroup.java:3405) 

即時得到上述錯誤,同時展開可展開的列表視圖。我怎樣才能解決這個問題?

以下是我childview XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="55dip" 
       android:background="@color/light_color_2" 
       android:orientation="vertical"> 


    <TextView 
     android:id="@+id/lblListItem" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginLeft="15dp" 
     android:layout_marginStart="15dp" 
     android:paddingBottom="5dp" 
     android:paddingTop="5dp" 
     android:textAppearance="?android:attr/textAppearanceSmall"/> 
    <ImageView 
     android:layout_width="12dp" 
     android:layout_height="12dp" 
     android:layout_alignParentEnd="true" 
     android:layout_centerVertical="true" 
     android:src="@drawable/chevron"/> 

</RelativeLayout> 

以下是我groupview XML

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


    <TextView 
     android:padding="8dp" 
     android:id="@+id/lblListHeader" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentStart="true" 
     android:text="assa" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:textColor="@color/black" 
     android:textStyle="normal"/> 


    <ImageView 
     android:id="@+id/indicator_list" 
     android:layout_width="wrap_content" 
     android:layout_height="10dp" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:layout_gravity="center_vertical|center_horizontal" 
     android:layout_margin="3dp" 
     android:layout_weight="1" 
     android:src="@drawable/circle_arrow"/> 
</RelativeLayout> 

以下是我expandablelistview XML代碼

<ExpandableListView 
     android:id="@+id/lvExp" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/app_bar" 
     android:childDivider="@null" 
     android:divider="@color/gray" 
     android:dividerHeight="1dp" 
     android:groupIndicator="@null"/> 
+0

顯示XML的佈局,問題很可能是在這裏,BC的Java代碼看起來不錯 –

+0

你可以看到組的看法,但你不能看到childview手段,會出現錯誤在xml文件中或者你在java中的聲明可能是錯誤的。所以發佈xml文件 –

+0

我已經包含這兩個 –

回答

1

問題是childDivider,它不應該爲空,將其更改爲透明

<ExpandableListView 
     android:id="@+id/lvExp" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/app_bar" 
     android:childDivider="@android:color/transparent" 
     android:divider="@color/gray" 
     android:dividerHeight="1dp" 
     android:groupIndicator="@null"/> 

或者直接刪除整條生產線,它不是必需的屬性

+0

讓我試試..... –

+0

兄弟....你是一個天才......非常感謝你哥哥 –