fragment_tools_yiboshi_project_course.xml

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

item_expandable_group_ybs_priject

<?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="wrap_content"
    android:background="@color/config_color_select_bg"
    android:orientation="horizontal">
    <TextView
        android:id="@+id/title"
        style="@style/TextStyle.Explain"
        android:padding="12dp"
        android:layout_marginLeft="15dp"
        android:textColor="@android:color/holo_blue_dark">
    </TextView>

    <TextView
        android:id="@+id/totalHour"
        style="@style/TextStyle.Explain"
        android:padding="12dp"
        android:textColor="@android:color/holo_purple">
    </TextView>

</LinearLayout>

item_expandable_child_ybs_priject

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/xui_config_list_item_selector"
    android:padding="5dp"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/courseImg"
        android:layout_width="80dp"
        android:layout_height="60dp"/>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical">

        <TextView
            android:id="@+id/courseName"
            style="@style/TextStyle.Explain"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:textColor="@android:color/holo_orange_dark">
        </TextView>

        <TextView
            android:id="@+id/courseLearnStatus"
            style="@style/TextStyle.Explain"
            android:layout_width="match_parent"
            android:layout_marginStart="5dp"
            android:gravity="right"
            android:layout_marginTop="10dp"
            android:textColor="@android:color/holo_green_dark"
            tools:ignore="RtlHardcoded">
        </TextView>

    </LinearLayout>

</LinearLayout>

ExpandableListYbsPrijectAdapter

package com.dajun.tools.adapter.base.YiBoShi;

import android.annotation.SuppressLint;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.dajun.tools.R;
import com.dajun.tools.entity.yiboshi.YbsGetProjectCourseInfo;

import java.util.ArrayList;
import java.util.List;

public class ExpandableListYbsPrijectAdapter extends BaseExpandableListAdapter {
    private Context context;
    private List<YbsGetProjectCourseInfo> jsonInfo1List = new ArrayList<>();

    public ExpandableListYbsPrijectAdapter(Context context, List<YbsGetProjectCourseInfo> jsonInfo1List) {
        this.context = context;
        this.jsonInfo1List = jsonInfo1List;
    }

    /**
     * 刷新列表数据
     *
     * @param collection
     * @return
     */
    public ExpandableListYbsPrijectAdapter refresh(List<YbsGetProjectCourseInfo> collection) {
        if (collection != null) {
            this.jsonInfo1List.clear();
            this.jsonInfo1List.addAll(collection);
            notifyDataSetChanged();
        }
        return this;
    }
    @Override
    public int getGroupCount() {
        return jsonInfo1List.size();
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        return jsonInfo1List.get(groupPosition).getCourseList().size();
    }

    @Override
    public Object getGroup(int groupPosition) {
        return jsonInfo1List.get(groupPosition);
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return jsonInfo1List.get(groupPosition).getCourseList().get(childPosition);
    }

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

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

    /**
     * 指示子 ID 和组 ID 在更改后是否稳定
     * @return 同一个ID是否总是指向同一个对象
     */
    @Override
    public boolean hasStableIds() {
        return false;
    }

    /**
     * 指定位置的child是否可选
     * @param groupPosition
     * @param childPosition
     * @return true为可选, 反之
     */
    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }

    /**
     * 可扩展-->组view
     * @param groupPosition
     * @param isExpanded
     * @param convertView
     * @param parent
     * @return
     */
    @SuppressLint("SetTextI18n")
    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        GroupViewHolder groupViewHolder = null;
        if (convertView == null) {
            convertView = LayoutInflater.from(context).inflate(R.layout.item_expandable_group_ybs_priject, null);
            groupViewHolder = new GroupViewHolder(convertView);
        } else {
            groupViewHolder = (GroupViewHolder) convertView.getTag();
        }
        groupViewHolder.title.setText(jsonInfo1List.get(groupPosition).getProjectName());
        groupViewHolder.totalHour.setText(jsonInfo1List.get(groupPosition).getTotalHour() + "课时");

        return convertView;
    }

    /**
     * 可扩展-->组view中,子view
     * @param groupPosition
     * @param childPosition
     * @param isLastChild
     * @param convertView
     * @param parent
     * @return
     */
    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        ChildViewHolder childViewHolder = null;
        if (convertView == null) {
            convertView = LayoutInflater.from(context).inflate(R.layout.item_expandable_child_ybs_priject, null);
            childViewHolder = new ChildViewHolder(convertView);
        } else {
            childViewHolder = (ChildViewHolder) convertView.getTag();
        }
        childViewHolder.courseName.setText(jsonInfo1List.get(groupPosition).getCourseList().get(childPosition).getCourseName());
        int CourseLearnStatus = jsonInfo1List.get(groupPosition).getCourseList().get(childPosition).getCourseLearnStatus();
        if (CourseLearnStatus == 0) childViewHolder.courseLearnStatus.setText("未学习");
        else if (CourseLearnStatus == 1) childViewHolder.courseLearnStatus.setText("在学中");
        else if (CourseLearnStatus == 2) childViewHolder.courseLearnStatus.setText("已学习");
        else if (CourseLearnStatus == 3) childViewHolder.courseLearnStatus.setText("已申请");
        else childViewHolder.courseLearnStatus.setText("未知");
        Glide.with(context).load(jsonInfo1List.get(groupPosition).getCourseList().get(childPosition).getCourseImg()).into(childViewHolder.courseImg);
        return convertView;
    }

    public static class GroupViewHolder {
        public TextView title;
        public TextView totalHour;

        public GroupViewHolder(View view) {
            title = view.findViewById(R.id.title);
            totalHour = view.findViewById(R.id.totalHour);
            view.setTag(this);
        }
    }

    public static class ChildViewHolder {
        public ImageView courseImg;
        public TextView courseName;
        public TextView courseLearnStatus;

        public ChildViewHolder(View view) {
            courseImg = view.findViewById(R.id.courseImg);
            courseName = view.findViewById(R.id.courseName);
            courseLearnStatus = view.findViewById(R.id.courseLearnStatus);
            view.setTag(this);
        }
    }
}

YiBoShiProjectCourseFragment

ExpandableListYbsPrijectAdapter expandableListAdapter;
List<YbsGetProjectCourseInfo> res = new ArrayList<>();expandableListAdapter = new 

ExpandableListYbsPrijectAdapter(getContext(), res);
binding.expandableMenu.setAdapter(expandableListAdapter);
@SuppressLint("CheckResult")
    @Override
    protected void initListeners() {
        //下拉刷新
        binding.refreshLayout.setOnRefreshListener(refreshLayout -> {
            XHttpProxy.proxy(UserApi.IYiboshi.class).getProjectCourse(SettingUtils.getApiYbsUserId(), user_id.getId()).subscribeWith(new TipRequestSubscriber<List<YbsGetProjectCourseInfo>>() {
                @Override
                protected void onSuccess(List<YbsGetProjectCourseInfo> response) {
                    if (response.size() == 0) {
                        binding.llStateful.showError("没有数据", null);
                    } else {
                        expandableListAdapter.refresh(response);
                    }
                    refreshLayout.finishRefresh();
                    refreshLayout.finishLoadMore(false);
                }

                @Override
                public void onError(ApiException e) {
                    super.onError(e);
                    Logger.e(e.toString());
                    refreshLayout.finishRefresh(false);
                    binding.llStateful.showError("错误信息:" + e.getCode() + "-" + e.getMessage(), null);
                }
            });
        });
        binding.refreshLayout.autoRefresh();//第一次进入触发自动刷新,演示效果
    }

image.png

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部

Copyright © 2016-2025.By阿狸小乖 版权所有    主页

滇ICP备17010414号-1