繁体   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