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();//第一次进入触发自动刷新,演示效果
}
发表评论 取消回复