732003684

导航

自定义可下拉刷新列表

package com.hwtt.android.oa.adapter.myapply;

import java.util.ArrayList;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.hwtt.android.oa.activity.R;
import com.hwtt.android.oa.activity.mytodeal.DetailsHolidayActivity;
import com.hwtt.android.oa.asyntask.myapply.DelApplyAsynTask;
import com.hwtt.android.oa.bean.deal.HolidayInfo;
import com.hwtt.android.oa.constants.Constants;
import com.hwtt.android.oa.tool.MyExpanableListView;
import com.hwtt.android.oa.tool.MyProgressDialog;

/**
 * 假单申请列表适配器
 * 
 * @author Administrator
 * 
 */
public class HolidayApplyElvAdapter extends BaseExpandableListAdapter {
    private Context context;
    private int groupResourceId;
    private int childResourceId;
    private ArrayList<HolidayInfo> groupData; // 组数据
    private MyExpanableListView elv;
    private LayoutInflater inflater;
    private MyProgressDialog progressDialog;
    private Handler mHandler;
    public ArrayList<Boolean> isCheckList = new ArrayList<Boolean>(); // 保存checkbox的点击状态

    public HolidayApplyElvAdapter(Context context, int groupResourceId,
            int childResourceId, ArrayList<HolidayInfo> groupData,
            MyExpanableListView elv, MyProgressDialog progressDialog,
            Handler mHandler) {
        super();
        this.context = context;
        this.groupResourceId = groupResourceId;
        this.childResourceId = childResourceId;
        this.groupData = groupData;
        this.elv = elv;
        this.progressDialog = progressDialog;
        this.mHandler = mHandler;

        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        // 初始化 ischeck
        for (int i = 0; i < groupData.size(); i++) {
            isCheckList.add(false);
        }

    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        // TODO Auto-generated method stub
        return childPosition;
    }

    @Override
    public View getChildView(final int groupPosition, int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {
        TextView tvRead, tvDelete;
        ViewHolder vh;
        if (convertView == null) {
            convertView = inflater.inflate(childResourceId, null);
            tvRead = (TextView) convertView.findViewById(R.id.tvRead);
            tvDelete = (TextView) convertView.findViewById(R.id.tvDelete);
            vh = new ViewHolder();
            vh.setTvRead(tvRead);
            vh.setTvDelete(tvDelete);
            convertView.setTag(vh);

        } else {
            vh = (ViewHolder) convertView.getTag();
            tvRead = vh.getTvRead();
            tvDelete = vh.getTvDelete();
        }
        // 查看申请详情
        tvRead.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(context, DetailsHolidayActivity.class);
                intent.putExtra(Constants.FROM, Constants.MY_APPLY); // 假单申请详情和假单待办详情的布局不同
                intent.putExtra("id", groupData.get(groupPosition).getId());// 传递申请编号
                context.startActivity(intent);
            }
        });
        // 删除
        tvDelete.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                final ArrayList<Integer> listGId = new ArrayList<Integer>();
                final ArrayList<String> listApplyId = new ArrayList<String>();
                AlertDialog dialog;
                AlertDialog.Builder builder = new AlertDialog.Builder(context)
                        .setTitle("温馨提示").setMessage("确定要删除该项吗?")
                        .setPositiveButton("确定",
                                new DialogInterface.OnClickListener() {

                                    @Override
                                    public void onClick(DialogInterface dialog,
                                            int which) {
                                        // progressDialog.show();

                                        elv.settips("正在删除...");
                                        elv.showHeaderView();
                                        elv.settips("正在刷新...");

                                        listGId.add(groupPosition);
                                        listApplyId.add(groupData.get(
                                                groupPosition).getId());

                                        new DelApplyAsynTask(context, mHandler,
                                                listGId, "0")
                                                .execute(listApplyId);
                                    }
                                }).setNegativeButton("取消", null);
                dialog = builder.create();
                dialog.show();

            }
        });

        return convertView;
    }

    /**
     * 获取当前点击开的组ID
     * 
     * @return
     */
    private int getExpandedGroupId() {
        int seletedPos = 0; // 判断点击的组ID
        for (int i = 0; i < groupData.size(); i++) {
            if (elv.isGroupExpanded(i)) {
                seletedPos = i;

                break;
            }
        }
        return seletedPos;
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        // TODO Auto-generated method stub
        return 1;
    }

    @Override
    public Object getGroup(int groupPosition) {
        // TODO Auto-generated method stub
        return groupData.get(groupPosition);
    }

    @Override
    public int getGroupCount() {
        // TODO Auto-generated method stub
        return groupData.size();
    }

    @Override
    public long getGroupId(int groupPosition) {
        // TODO Auto-generated method stub
        return groupPosition;
    }

    @Override
    public View getGroupView(final int groupPosition, boolean isExpanded,
            View convertView, ViewGroup parent) {
        String time, type, state, holidaytime = null; // 申请类型,申请时间,审批进度,休假时数
        TextView tvTime, tvPrompt, tvType, tvPrompt3, tv_Time, tvState;
        RelativeLayout rl_01;
        CheckBox cb = null;

        ViewHolder vh;
        HolidayInfo info = groupData.get(groupPosition);

        if (convertView == null) {
            convertView = inflater.inflate(groupResourceId, null);
            rl_01 = (RelativeLayout) convertView.findViewById(R.id.rl_01);
            tvTime = (TextView) convertView.findViewById(R.id.tvTime);// 申请时间
            tvState = (TextView) convertView.findViewById(R.id.tvState);// 状态
            tv_Time = (TextView) convertView.findViewById(R.id.tv_Time);// 休假时数
            tvPrompt = (TextView) convertView.findViewById(R.id.tvRandomPrompt);
            tvPrompt3 = (TextView) convertView.findViewById(R.id.tvPrompt3);
            tvType = (TextView) convertView.findViewById(R.id.tvRandom);
            cb = (CheckBox) convertView.findViewById(R.id.cbApply);

            vh = new ViewHolder();
            vh.setTvTime(tvTime);
            vh.setTv_Time(tv_Time);
            vh.setTvState(tvState);
            vh.setTvPrompt(tvPrompt);
            vh.setTvPrompt3(tvPrompt3);
            vh.setTvType(tvType);
            vh.setCb(cb);
            vh.setRl_01(rl_01);
            convertView.setTag(vh);

        } else {

            vh = (ViewHolder) convertView.getTag();
            tvTime = vh.getTvTime();
            tv_Time = vh.getTv_Time();
            tvState = vh.getTvState();
            tvPrompt = vh.getTvPrompt();
            tvPrompt3 = vh.getTvPrompt3();
            tvType = vh.getTvType();
            rl_01 = vh.getRl_01();
            cb = vh.getCb();
        }

        time = info.getApplicationDate(); // 获取申请时间
        holidaytime = info.getHolidayTime();// 获取休假时数
        type = info.getType(); // 获取假单类型描述
        state = info.getState();// 获取状态

        tvState.setText(state);
        tvTime.setText(time);
        tv_Time.setText(holidaytime);
        tvPrompt.setText("类型:");
        tvPrompt3.setText("休假时数:");
        tvType.setText(type);
        cb.setChecked(isCheckList.get(groupPosition));

        cb.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                if (isCheckList.get(groupPosition)) {
                    isCheckList.set(groupPosition, false);
                } else {
                    isCheckList.set(groupPosition, true);
                }

            }
        });

        if (!isExpanded) {
            rl_01.setBackgroundResource(R.drawable.default_item_bg);
        } else {
            rl_01.setBackgroundResource(R.drawable.ext_item_bg);
        }

        return convertView;
    }

    @Override
    public boolean hasStableIds() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        // TODO Auto-generated method stub
        return false;
    }

    /**
     * 存储控件变量
     * 
     * @author Administrator
     * 
     */
    private class ViewHolder {

        TextView tvTime, tvPrompt, tvType, tvPrompt3, tv_Time, tvState;
        TextView tvRead, tvDelete;
        CheckBox cb;
        RelativeLayout rl_01;

        public ViewHolder() {
            super();
            // TODO Auto-generated constructor stub
        }

        public TextView getTvRead() {
            return tvRead;
        }

        public void setTvRead(TextView tvRead) {
            this.tvRead = tvRead;
        }

        public TextView getTvDelete() {
            return tvDelete;
        }

        public void setTvDelete(TextView tvDelete) {
            this.tvDelete = tvDelete;
        }

        public CheckBox getCb() {
            return cb;
        }

        public void setCb(CheckBox cb) {
            this.cb = cb;
        }

        public TextView getTvTime() {
            return tvTime;
        }

        public void setTvTime(TextView tvTime) {
            this.tvTime = tvTime;
        }

        public TextView getTvType() {
            return tvType;
        }

        public void setTvType(TextView tvType) {
            this.tvType = tvType;
        }

        public TextView getTvPrompt() {
            return tvPrompt;
        }

        public void setTvPrompt(TextView tvPrompt) {
            this.tvPrompt = tvPrompt;
        }

        public RelativeLayout getRl_01() {
            return rl_01;
        }

        public void setRl_01(RelativeLayout rl_01) {
            this.rl_01 = rl_01;
        }

        public TextView getTvPrompt3() {
            return tvPrompt3;
        }

        public void setTvPrompt3(TextView tvPrompt3) {
            this.tvPrompt3 = tvPrompt3;
        }

        public TextView getTv_Time() {
            return tv_Time;
        }

        public void setTv_Time(TextView tvTime) {
            tv_Time = tvTime;
        }

        public TextView getTvState() {
            return tvState;
        }

        public void setTvState(TextView tvState) {
            this.tvState = tvState;
        }

    }
}

 

posted on 2013-01-24 14:10  732003684  阅读(534)  评论(0编辑  收藏  举报