簡體   English   中英

展開Expandablelistview會使應用程序崩潰

[英]Expanding an Expandablelistview crashes the app

以下是我的getChildView方法

  @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"/>

問題在childDivider ,它不應該為null,將其更改為transparent

<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"/>

或者只是刪除整行,這不是必需屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM