ExpandableListView的Adapter--MealExpandableListAdapter

直接从项目里复制出来的,没有删除多余的代码,用的时候删除掉那些赋值就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 java.util.Date;
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);
            }
        };
    }

    public void refresh() {
        handler.sendMessage(new Message());
    }
    public void setChildData(List<HashMap<String, Object>> list) {
        this.list = list;
        notifyDataSetChanged();
    }
    //得到子item需要关联的数据
    @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;
    }
    //点击事件发生后:先执行事件监听,然后调用此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);
            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();
        }
        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));
        }

        //完成时间
        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.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;
    }
    //获取当前父item下的子item的个数
    @Override
    public int getChildrenCount(int groupPosition) {
        return 1;
    }
    //获取当前父item的数据
    @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;
    }
    //设置父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);
            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();
        }
        //状态判断
        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;
    }
    @Override
    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;
        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;
    }
}

//二级列表页面
List<HashMap<String, Object>> list = (List<HashMap<String, Object>>) jsonBean.get("taskInfoList"); //tkinfo.getTaskInfoList();
                initData(list);

//set到Adapter
 private void initData(List list) {
        mealExpandableListAdapter.setChildData(dataList);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值