java - 当父组已展开以显示其子组时,如何更改图标

标签 java android android-layout expandablelistview

我有一个可扩展的 ListView ,我想在单击父组并显示子组时将图标从向右箭头更改为向下箭头。目前,当我单击父组展开并显示子组时,图标不会从右箭头更改为向下箭头,它只是保留为右箭头图标。这就是我现在的可扩展适配器中的内容。

@Override
   public View getGroupView(int groupPosition, boolean isExpanded,
                            View convertView, ViewGroup parent) {
      String headerTitle = getGroup(groupPosition).toString();
      if (convertView == null) {
         LayoutInflater infalInflater = (LayoutInflater) this._context
               .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         convertView = infalInflater.inflate(R.layout.list_group, null);



         ImageView arrowImageView = (ImageView) convertView.findViewById (R.id.group_header_arrow);
         if (isExpanded) {
            arrowImageView.setImageResource(R.drawable.arrow_down);
           (ApplicationContext.Activity.Resources.GetColor (Resource.Color.standard_blue));
         }


      }
      TextView lblListHeader = (TextView) convertView
            .findViewById(R.id.lblListHeader);

      lblListHeader.setText(headerTitle);
      TextView Header = (TextView) convertView
            .findViewById(R.id.lblListHeader);

      lblListHeader.setText(headerTitle);
      return convertView;
   }

组 header 的 XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical"
              android:padding="8dp"
              android:background="#f4f4f4">


   <ImageView
      android:id="@+id/group_header_arrow"
      android:src="@drawable/arrow_right"
      android:layout_centerVertical="true"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:paddingRight="10dp" />

   <TextView
      android:id="@+id/lblListHeader"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
      android:textSize="17dp"
      android:textColor="#388C2A" />

</LinearLayout>

最佳答案

在适配器类中添加此代码,

    final ExpandableListView mExpandableListView= (ExpandableListView) parent ;

    mExpandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {

        @Override
        public void onGroupExpand(int groupPosition) {
            arrowImageView.setImageResource(R.drawable.arrow_down);
        }
    });

    mExpandableListView.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() {

        @Override
        public void onGroupCollapse(int groupPosition) {
            arrowImageView.setImageResource(R.drawable.arrow_left);
        }
    });

    if(mExpandableListView.isGroupExpanded(groupPosition))
    {
       arrowImageView.setImageResource(R.drawable.arrow_down);
    }
    else
    {
       arrowImageView.setImageResource(R.drawable.arrow_left);
    }

关于java - 当父组已展开以显示其子组时,如何更改图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42199704/

相关文章:

java - 如何从迭代器 next() 方法返回的对象中获取信息?

java - 当 MDB 尝试连接到远程队列时,WebSphere 8 中出现异常

android - 自定义按钮的可 ScrollView 的正确方法?

android - 如何让我们的布局适应我们在android中的屏幕设备?

java - RecyclerView中的setRecycledViewPool方法

android - AppCompat 工具栏不显示

java - 为什么我的 bufferedReader 从文本文件中读取 `java.lang.String;@70177ecd` ?

Debian 上的 Java native 内存泄漏

android - 每行中具有动态列数的 GridView

java - 我的EditText仅由SetText()更新;每第二次尝试