【问题标题】:customized Expandable listview right arrow to down arrow not working in android自定义的可扩展列表视图向右箭头到向下箭头在 android 中不起作用
【发布时间】:2021-01-04 09:27:27
【问题描述】:

您好,在下面的代码中,我自定义了可展开的列表视图。我的视图,如图像、标题、右箭头。

如果当时点击展开的我的列表项想将右箭头改为下箭头。

但是如何实现这一点任何人都可以帮助我

listheader.java:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="20dp"
        android:id="@+id/listheadermain"
        android:orientation="horizontal">



        <ImageView
            android:id="@+id/iconimage"
            android:layout_width="30dp"
            android:layout_height="50dp"
            android:paddingBottom="5dp"
            android:paddingLeft="5dp"
            app:tint="@color/theme"
            android:paddingTop="5dp" />

        <TextView
            android:id="@+id/submenu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/theme"
            android:fontFamily="@font/robotoregular"
            android:paddingLeft="5dp"
            android:layout_weight="1"
            android:paddingTop="15dp"
            android:textSize="12sp"/>

        <ImageView
            android:id="@+id/right_arrow"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:padding="5dp"
            android:paddingTop="5dp"
            android:paddingBottom="5dp"
            android:src="@drawable/arrow_right"
            app:tint="@color/theme" />

    </LinearLayout>

</LinearLayout>

ExpandableListAdapter.java:

public class ExpandableListAdapter extends BaseExpandableListAdapter {
    private Context mContext;
    private List<ExpandedMenuModel> mListDataHeader; // header titles

    // child data in format of header title, child title
    private HashMap<ExpandedMenuModel, List<String>> mListDataChild;
    ExpandableListView expandList;

    public ExpandableListAdapter(Context context, List<ExpandedMenuModel> listDataHeader, HashMap<ExpandedMenuModel, List<String>> listChildData, ExpandableListView mView) {
        this.mContext = context;
        this.mListDataHeader = listDataHeader;
        this.mListDataChild = listChildData;
        this.expandList = mView;
    }

    @Override
    public int getGroupCount() {
        int i = mListDataHeader.size();
        Log.d("GROUPCOUNT", String.valueOf(i));
        return this.mListDataHeader.size();
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        int childCount = 0;
        if (groupPosition != 8) {
            childCount = this.mListDataChild.get(this.mListDataHeader.get(groupPosition)).size();
        }
        return childCount;
    }

    @Override
    public Object getGroup(int groupPosition) {

        return this.mListDataHeader.get(groupPosition);
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        Log.d("CHILD", mListDataChild.get(this.mListDataHeader.get(groupPosition))
                .get(childPosition).toString());
        return this.mListDataChild.get(this.mListDataHeader.get(groupPosition))
                .get(childPosition);
    }

    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

    @Override
    public boolean hasStableIds() {
        return false;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        ExpandedMenuModel headerTitle = (ExpandedMenuModel) getGroup(groupPosition);
        if (convertView == null) {
            LayoutInflater infalInflater = (LayoutInflater) this.mContext
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.listheader, null);
        }
        TextView lblListHeader = (TextView) convertView
                .findViewById(R.id.submenu);
        ImageView headerIcon = (ImageView) convertView.findViewById(R.id.iconimage);
        final ImageView rightarrowIcon=(ImageView) convertView.findViewById(R.id.right_arrow);
        final LinearLayout listheadermain=(LinearLayout)convertView.findViewById(R.id.listheadermain);
        lblListHeader.setTypeface(null, Typeface.BOLD);
        lblListHeader.setText(headerTitle.getIconName());
        headerIcon.setImageResource(headerTitle.getIconImg());
        rightarrowIcon.setImageResource(R.drawable.arrow_right);
        return convertView;
    }

    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        final String childText = (String) getChild(groupPosition, childPosition);

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

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

        txtListChild.setText(childText);

        return convertView;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }
}

MainActivity.java:

private void prepareListData() {
        listDataHeader = new ArrayList<ExpandedMenuModel>( );
        listDataChild = new HashMap<ExpandedMenuModel, List<String>>( );

        ExpandedMenuModel item0 = new ExpandedMenuModel ( );
        item0.setIconName ("Home");
        item0.setIconImg (R.drawable.ic_round_dashboard_24);
        listDataHeader.add (item0);
        List<String> heading0 = new ArrayList<String>( );

        ExpandedMenuModel item1 = new ExpandedMenuModel ( );
        item1.setIconName ("My Account");
        item1.setIconImg (R.drawable.ic_account_circle_black_24dp);
        listDataHeader.add (item1);

        List<String> heading1 = new ArrayList<String>( );
        heading1.add("My Profile");
        heading1.add("My Family");
        heading1.add("My Consultation History");
        heading1.add("My Health Records");

        ExpandedMenuModel item2 = new ExpandedMenuModel ( );
        item2.setIconName ("COVID19");
        item2.setIconImg (R.drawable.ic_baseline_coronavirus_24);
        // Adding data header
        listDataHeader.add (item2);
        List<String> heading2 = new ArrayList<String>( );

        ExpandedMenuModel item3 = new ExpandedMenuModel ( );
        item3.setIconName ("Appointments");
        item3.setIconImg (R.drawable.ic_baseline_library_books_24);
        // Adding data header
        listDataHeader.add (item3);
        List<String> heading3 = new ArrayList<String>( );
        heading3.add ("Book Appointment");
        heading3.add ("My Appointments");
        heading3.add ("Terms & conditions");
        heading3.add ("Privacy Policy");

        ExpandedMenuModel item4 = new ExpandedMenuModel ( );
        item4.setIconName ("Speciality");
        item4.setIconImg (R.drawable.ic_account_circle_black_24dp);
        listDataHeader.add (item4);
        List<String> heading4 = new ArrayList<String>( );


        ExpandedMenuModel item5 = new ExpandedMenuModel ( );
        item5.setIconName ("Hospitals/Clinics");
        item5.setIconImg (R.drawable.ic_round_local_hospital_24);
        listDataHeader.add (item5);
        List<String> heading5 = new ArrayList<String>( );


        ExpandedMenuModel item6 = new ExpandedMenuModel ( );
        item6.setIconName ("Logout");
        item6.setIconImg (R.drawable.ic_launcher);
        listDataHeader.add (item6);
        List<String> heading6 = new ArrayList<String>( );
        listDataChild.put (listDataHeader.get (0), heading0);
        listDataChild.put (listDataHeader.get (1), heading1);
        listDataChild.put (listDataHeader.get (2), heading2);// Header, Child data
        listDataChild.put (listDataHeader.get (3), heading3);
        listDataChild.put (listDataHeader.get (4), heading4);
        listDataChild.put (listDataHeader.get (5), heading5);
        listDataChild.put (listDataHeader.get (6), heading6);
      
    }

【问题讨论】:

    标签: android expandablelistview


    【解决方案1】:

    我找到了解决办法

     if(isExpanded){
                rightarrowIcon.setImageResource(R.drawable.arrow_down);
            }else {
                rightarrowIcon.setImageResource(R.drawable.arrow_right);
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      • 2022-11-08
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 2019-02-03
      相关资源
      最近更新 更多