настраиваемый расширяемый список со стрелкой вправо до стрелки вниз не работает в Android

#android #expandablelistview

#Android #расширяемый список

Вопрос:

Привет, в приведенном ниже коде я настроил свой расширяемый список. мой вид, как изображение, заголовок заголовка, стрелка вправо.

Если щелкнуть расширенный элемент моего списка в то время, когда нужно изменить стрелку вправо на стрелку вниз.

Но как этого добиться, может ли кто-нибудь мне помочь

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 amp; 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);
      
    }
 

Ответ №1:

Я получил решение

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