直接从项目里复制出来的,没有删除多余的代码,用的时候删除掉那些赋值就OK了
package com.android.mgwaiter.adapter;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RatingBar;
import android.widget.TextView;
import com.android.mgwaiter.R;
import com.android.mgwaiter.utils.DateUtils;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RatingBar;
import android.widget.TextView;
import com.android.mgwaiter.R;
import com.android.mgwaiter.utils.DateUtils;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.HashMap;
import java.util.List;
/**
* Created by huyanan
*
*/
public class MealExpandableListAdapter extends BaseExpandableListAdapter {
private List<HashMap<String, Object>> list;
private Context context = null;
private ViewHolder viewHolder = null;
private Handler handler;
public MealExpandableListAdapter(Context context, List<HashMap<String, Object>> list) {
this.context = context;
this.list = list;
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
notifyDataSetChanged();
super.handleMessage(msg);
}
};
}
this.context = context;
this.list = list;
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
notifyDataSetChanged();
super.handleMessage(msg);
}
};
}
public void refresh() {
handler.sendMessage(new Message());
}
public void setChildData(List<HashMap<String, Object>> list) {
this.list = list;
notifyDataSetChanged();
}
this.list = list;
notifyDataSetChanged();
}
//得到子item需要关联的数据
@Override
public Object getChild(int groupPosition, int childPosition) {
// String key = context.parent.get(groupPosition);
return childPosition;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
// String key = context.parent.get(groupPosition);
return childPosition;
}
//得到子item的ID
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
//点击事件发生后:先执行事件监听,然后调用此getChildView()
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.expandable_item, null);
viewHolder = new ViewHolder();
//下单时间
viewHolder.tv_place_time = (TextView) convertView
.findViewById(R.id.tv_place_time);
viewHolder.order_receiving_time = (TextView) convertView
.findViewById(R.id.tv_order_time);
viewHolder.finish_times = (TextView) convertView
.findViewById(R.id.finish_times);
viewHolder.tv_miss_time = (TextView) convertView
.findViewById(R.id.tv_miss_time);
viewHolder.tv_service_time = (TextView) convertView
.findViewById(R.id.tv_service_time);
viewHolder.tv_home_number = (TextView) convertView
.findViewById(R.id.tv_home_number);
viewHolder.tv_calling_area = (TextView) convertView
.findViewById(R.id.tv_calling_area);
viewHolder.tv_call_context = (TextView) convertView
.findViewById(R.id.tv_call_context);
viewHolder.tv_person_name = (TextView) convertView
.findViewById(R.id.tv_person_name);
viewHolder.ll_4 = (LinearLayout)convertView.findViewById(R.id.ll_4);
//完成layout
viewHolder.ll_finish = (LinearLayout) convertView.findViewById(R.id.ll_finish);
//取消layout
viewHolder.ll_miss = (LinearLayout) convertView.findViewById(R.id.ll_miss);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder = new ViewHolder();
//下单时间
viewHolder.tv_place_time = (TextView) convertView
.findViewById(R.id.tv_place_time);
viewHolder.order_receiving_time = (TextView) convertView
.findViewById(R.id.tv_order_time);
viewHolder.finish_times = (TextView) convertView
.findViewById(R.id.finish_times);
viewHolder.tv_miss_time = (TextView) convertView
.findViewById(R.id.tv_miss_time);
viewHolder.tv_service_time = (TextView) convertView
.findViewById(R.id.tv_service_time);
viewHolder.tv_home_number = (TextView) convertView
.findViewById(R.id.tv_home_number);
viewHolder.tv_calling_area = (TextView) convertView
.findViewById(R.id.tv_calling_area);
viewHolder.tv_call_context = (TextView) convertView
.findViewById(R.id.tv_call_context);
viewHolder.tv_person_name = (TextView) convertView
.findViewById(R.id.tv_person_name);
viewHolder.ll_4 = (LinearLayout)convertView.findViewById(R.id.ll_4);
//完成layout
viewHolder.ll_finish = (LinearLayout) convertView.findViewById(R.id.ll_finish);
//取消layout
viewHolder.ll_miss = (LinearLayout) convertView.findViewById(R.id.ll_miss);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
HashMap<String, Object> tm = list.get(groupPosition);
HashMap<String, String> cancelDetail = null;
if (!TextUtils.isEmpty(tm.get("cancelDetail") + "")){
cancelDetail = (HashMap<String, String>) tm.get("cancelDetail");}
//下单时间
String produceTime = tm.get("produceTime") + ""; //tm.getProduceTime();
if (TextUtils.isEmpty(produceTime)) {
viewHolder.tv_place_time.setText("");
} else {
viewHolder.tv_place_time.setText(DateUtils.getStrTime(produceTime));
}
//接单时间
String acceptTime = tm.get("acceptTime") + ""; // tm.getAcceptTime();
if (TextUtils.isEmpty(acceptTime)) {
viewHolder.order_receiving_time.setText("");
} else {
viewHolder.order_receiving_time.setText(DateUtils.getStrTime(acceptTime));
}
HashMap<String, String> cancelDetail = null;
if (!TextUtils.isEmpty(tm.get("cancelDetail") + "")){
cancelDetail = (HashMap<String, String>) tm.get("cancelDetail");}
//下单时间
String produceTime = tm.get("produceTime") + ""; //tm.getProduceTime();
if (TextUtils.isEmpty(produceTime)) {
viewHolder.tv_place_time.setText("");
} else {
viewHolder.tv_place_time.setText(DateUtils.getStrTime(produceTime));
}
//接单时间
String acceptTime = tm.get("acceptTime") + ""; // tm.getAcceptTime();
if (TextUtils.isEmpty(acceptTime)) {
viewHolder.order_receiving_time.setText("");
} else {
viewHolder.order_receiving_time.setText(DateUtils.getStrTime(acceptTime));
}
//完成时间
String finishTime = tm.get("finishTime") + "";// tm.getFinishTime();
if (TextUtils.isEmpty(finishTime)) {
viewHolder.ll_finish.setVisibility(View.GONE);
viewHolder.ll_miss.setVisibility(View.VISIBLE);
} else {
viewHolder.finish_times.setText(DateUtils.getStrTime(finishTime));
viewHolder.ll_miss.setVisibility(View.GONE);
}
//取消时间
if (cancelDetail == null) {
viewHolder.ll_miss.setVisibility(View.GONE);
viewHolder.ll_finish.setVisibility(View.VISIBLE);
} else {
String causeTime = cancelDetail.get("causeTime") + "";// tm.getCauseTime();
viewHolder.ll_miss.setVisibility(View.VISIBLE);
viewHolder.ll_finish.setVisibility(View.GONE);
viewHolder.ll_4.setVisibility(View.INVISIBLE);
viewHolder.tv_miss_time.setText(DateUtils.getStrTime(causeTime));
}
if (!TextUtils.isEmpty(finishTime)) {
viewHolder.tv_service_time.setText(DateUtils.timer(DateUtils.getStartAndEndToTimes(new Date(Long.valueOf(acceptTime)), new Date(Long.valueOf(finishTime))) / 1000));
} else {
viewHolder.tv_service_time.setText("00:00:00");
}
viewHolder.ll_finish.setVisibility(View.GONE);
viewHolder.ll_miss.setVisibility(View.VISIBLE);
} else {
viewHolder.finish_times.setText(DateUtils.getStrTime(finishTime));
viewHolder.ll_miss.setVisibility(View.GONE);
}
//取消时间
if (cancelDetail == null) {
viewHolder.ll_miss.setVisibility(View.GONE);
viewHolder.ll_finish.setVisibility(View.VISIBLE);
} else {
String causeTime = cancelDetail.get("causeTime") + "";// tm.getCauseTime();
viewHolder.ll_miss.setVisibility(View.VISIBLE);
viewHolder.ll_finish.setVisibility(View.GONE);
viewHolder.ll_4.setVisibility(View.INVISIBLE);
viewHolder.tv_miss_time.setText(DateUtils.getStrTime(causeTime));
}
if (!TextUtils.isEmpty(finishTime)) {
viewHolder.tv_service_time.setText(DateUtils.timer(DateUtils.getStartAndEndToTimes(new Date(Long.valueOf(acceptTime)), new Date(Long.valueOf(finishTime))) / 1000));
} else {
viewHolder.tv_service_time.setText("00:00:00");
}
viewHolder.tv_person_name.setText(tm.get("customerName") + "");//发单顾客编号//tm.getCustomerName()
viewHolder.tv_home_number.setText(tm.get("customerRoomNum") + "");//发单顾客房间号 tm.getCustomerRoomNum()
viewHolder.tv_calling_area.setText(tm.get("areaName") + "");//区域名称tm.getAreaName()
viewHolder.tv_call_context.setText(tm.get("taskContent") + "");//任务内容tm.getTaskContent()
return convertView;
}
viewHolder.tv_home_number.setText(tm.get("customerRoomNum") + "");//发单顾客房间号 tm.getCustomerRoomNum()
viewHolder.tv_calling_area.setText(tm.get("areaName") + "");//区域名称tm.getAreaName()
viewHolder.tv_call_context.setText(tm.get("taskContent") + "");//任务内容tm.getTaskContent()
return convertView;
}
//获取当前父item下的子item的个数
@Override
public int getChildrenCount(int groupPosition) {
return 1;
}
@Override
public int getChildrenCount(int groupPosition) {
return 1;
}
//获取当前父item的数据
@Override
public Object getGroup(int groupPosition) {
return list.get(groupPosition);
}
@Override
public Object getGroup(int groupPosition) {
return list.get(groupPosition);
}
@Override
public int getGroupCount() {
return list.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
public long getGroupId(int groupPosition) {
return groupPosition;
}
//设置父item组件
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.task_title_layout, null);
viewHolder = new ViewHolder();
//下单时间
viewHolder.task_type = (ImageView) convertView.findViewById(R.id.task_type);
viewHolder.tv_task_type = (TextView) convertView.findViewById(R.id.tv_task_type);
viewHolder.tv_task_amount = (TextView) convertView.findViewById(R.id.tv_task_amount);
viewHolder.ratingBar = (RatingBar) convertView.findViewById(R.id.ratingBar);
viewHolder.ll_rating_item = (LinearLayout) convertView.findViewById(R.id.ll_rating_item);
viewHolder.tv_task_remak = (TextView) convertView.findViewById(R.id.tv_task_remak);
viewHolder.rb_all = (RadioButton) convertView.findViewById(R.id.rb_all);
viewHolder.rb_autonomously = (RadioButton) convertView.findViewById(R.id.rb_autonomously);
viewHolder.rb_system = (RadioButton) convertView.findViewById(R.id.rb_system);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder = new ViewHolder();
//下单时间
viewHolder.task_type = (ImageView) convertView.findViewById(R.id.task_type);
viewHolder.tv_task_type = (TextView) convertView.findViewById(R.id.tv_task_type);
viewHolder.tv_task_amount = (TextView) convertView.findViewById(R.id.tv_task_amount);
viewHolder.ratingBar = (RatingBar) convertView.findViewById(R.id.ratingBar);
viewHolder.ll_rating_item = (LinearLayout) convertView.findViewById(R.id.ll_rating_item);
viewHolder.tv_task_remak = (TextView) convertView.findViewById(R.id.tv_task_remak);
viewHolder.rb_all = (RadioButton) convertView.findViewById(R.id.rb_all);
viewHolder.rb_autonomously = (RadioButton) convertView.findViewById(R.id.rb_autonomously);
viewHolder.rb_system = (RadioButton) convertView.findViewById(R.id.rb_system);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
//状态判断
if ("8".equals(list.get(groupPosition).get("taskStatus"))) {
HashMap scoreDesc = null;
if (!TextUtils.isEmpty(list.get(groupPosition).get("scoreDesc") + ""))
scoreDesc = (HashMap) list.get(groupPosition).get("scoreDesc");
if (null != scoreDesc && !TextUtils.isEmpty(scoreDesc.get("scoreVal") + "")) {
viewHolder.ratingBar.setRating(Float.parseFloat(scoreDesc.get("scoreVal") + ""));
if (!TextUtils.isEmpty(scoreDesc.get("scoreVal") + "") && Float.parseFloat(scoreDesc.get("scoreVal") + "") > 0) {
viewHolder.tv_task_remak.setText("已评价");
} else {
viewHolder.tv_task_remak.setText("待评价");
}
} else {}
} else if ("9".equals(list.get(groupPosition).get("taskStatus"))) {
viewHolder.ll_rating_item.setVisibility(View.GONE);
}
viewHolder.tv_task_amount.setText(list.get(groupPosition).get("taskCode") + "");
//任务类型
String acceptMode = list.get(groupPosition).get("comeFrom") + "";
// int listcount = ;
if ("1".equals(acceptMode)) {
viewHolder.tv_task_type.setText("自主接单");
} else if ("2".equals(acceptMode)) {
viewHolder.tv_task_type.setText("系统派单");//任务类型
}
//判断是否展开
if (isExpanded) {
viewHolder.task_type.setBackgroundResource(R.mipmap.equilateral_triangle);
} else {
viewHolder.task_type.setBackgroundResource(R.mipmap.inverted_triangle);
}
return convertView;
}
if ("8".equals(list.get(groupPosition).get("taskStatus"))) {
HashMap scoreDesc = null;
if (!TextUtils.isEmpty(list.get(groupPosition).get("scoreDesc") + ""))
scoreDesc = (HashMap) list.get(groupPosition).get("scoreDesc");
if (null != scoreDesc && !TextUtils.isEmpty(scoreDesc.get("scoreVal") + "")) {
viewHolder.ratingBar.setRating(Float.parseFloat(scoreDesc.get("scoreVal") + ""));
if (!TextUtils.isEmpty(scoreDesc.get("scoreVal") + "") && Float.parseFloat(scoreDesc.get("scoreVal") + "") > 0) {
viewHolder.tv_task_remak.setText("已评价");
} else {
viewHolder.tv_task_remak.setText("待评价");
}
} else {}
} else if ("9".equals(list.get(groupPosition).get("taskStatus"))) {
viewHolder.ll_rating_item.setVisibility(View.GONE);
}
viewHolder.tv_task_amount.setText(list.get(groupPosition).get("taskCode") + "");
//任务类型
String acceptMode = list.get(groupPosition).get("comeFrom") + "";
// int listcount = ;
if ("1".equals(acceptMode)) {
viewHolder.tv_task_type.setText("自主接单");
} else if ("2".equals(acceptMode)) {
viewHolder.tv_task_type.setText("系统派单");//任务类型
}
//判断是否展开
if (isExpanded) {
viewHolder.task_type.setBackgroundResource(R.mipmap.equilateral_triangle);
} else {
viewHolder.task_type.setBackgroundResource(R.mipmap.inverted_triangle);
}
return convertView;
}
@Override
public boolean hasStableIds() {
return true;
}
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
class ViewHolder {
//下单时间
TextView tv_place_time;
//接单时间
TextView order_receiving_time;
//完成时间
TextView finish_times;
//取消时间
TextView tv_miss_time;
//服务时长
TextView tv_service_time;
//客人姓名
TextView tv_person_name;
//房间号码
TextView tv_home_number;
//呼叫区域
TextView tv_calling_area;
//呼叫内容
TextView tv_call_context;
//完成layout
LinearLayout ll_finish;
//取消layout
LinearLayout ll_miss;
//下单时间
TextView tv_place_time;
//接单时间
TextView order_receiving_time;
//完成时间
TextView finish_times;
//取消时间
TextView tv_miss_time;
//服务时长
TextView tv_service_time;
//客人姓名
TextView tv_person_name;
//房间号码
TextView tv_home_number;
//呼叫区域
TextView tv_calling_area;
//呼叫内容
TextView tv_call_context;
//完成layout
LinearLayout ll_finish;
//取消layout
LinearLayout ll_miss;
ImageView task_type;
//任务类型
TextView tv_task_type;
//任务编号
TextView tv_task_amount;
//评价状态
TextView tv_task_remak;
//评分
RatingBar ratingBar;
//pingjia
LinearLayout ll_rating_item;
//全部
RadioButton rb_all;
//自主
RadioButton rb_autonomously;
//管理员
RadioButton rb_system;
//服务时长
LinearLayout ll_4;
//任务类型
TextView tv_task_type;
//任务编号
TextView tv_task_amount;
//评价状态
TextView tv_task_remak;
//评分
RatingBar ratingBar;
//pingjia
LinearLayout ll_rating_item;
//全部
RadioButton rb_all;
//自主
RadioButton rb_autonomously;
//管理员
RadioButton rb_system;
//服务时长
LinearLayout ll_4;
}
}
}
//二级列表页面
List<HashMap<String, Object>> list = (List<HashMap<String, Object>>) jsonBean.get("taskInfoList"); //tkinfo.getTaskInfoList();
initData(list);
initData(list);
//set到Adapter
private void initData(List list) {
mealExpandableListAdapter.setChildData(dataList);
}
mealExpandableListAdapter.setChildData(dataList);
}