lmw
2023-06-13 4b7d8d9a038f6522df46d0f14fa07eb940a1b34d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package cn.sinata.xldutils.adapter;
 
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
 
import cn.sinata.xldutils.R;
import cn.sinata.xldutils.utils.Toast;
import cn.sinata.xldutils.view.utils.ViewHolder;
import cn.sinata.xldutils.widget.ProgressDialog;
 
/**
 * 实体类list的适配器
 * @author sinata
 *
 * @param <T>
 */
public abstract class ListAdapter<T> extends BaseAdapter {
 
    protected Context mContext;
    protected LayoutInflater mInflater;
    private ProgressDialog dialog;
 
    protected List<T> mList;   // 数据集
 
    protected int mLayoutID;    // 布局资源ID
    /**
     * 列表适配器
     * @param ctx 上下文
     * @param list    数据list
     * @param layoutID 视图layout
     */
    public ListAdapter(Context ctx, List<T> list, int layoutID) {
        mContext = ctx;
        mInflater = LayoutInflater.from(ctx);
        mList = list;
        mLayoutID = layoutID;
    }
    
    @Override
    public int getCount() {
        if (mList != null && mList.size() > 0) return mList.size();
        return 0;
    }
 
    @Override
    public T getItem(int position) {
        if (mList != null && mList.size() > 0) 
            return mList.get(position);
        return null;
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) convertView = mInflater.inflate(mLayoutID, null);
 
        ViewHolder holder = new ViewHolder(convertView);
        T t=getItem(position);
        if (t!=null) {
            onBind(position, t, holder);
        }
        return convertView;
    }
 
    /**
     * 绑定数据
     */
    protected abstract void onBind(int position, T t, ViewHolder holder);
 
    protected void showDialog(){
        if (mContext == null) {
            return;
        }
        if(dialog == null){
            dialog = new ProgressDialog(mContext, R.style.Theme_ProgressDialog);
        }
        dialog.setCanceledOnTouchOutside(true);
        dialog.setMessage("加载中...");
        if (!dialog.isShowing()) {
            dialog.show();
        }
    }
 
    /**
     * 关闭加载窗
     */
    protected void dismissDialog(){
        if (mContext!=null && dialog != null && dialog.isShowing()){
            dialog.dismiss();
        }
    }
    /**
     * 显示Toast
     * @param msg 显示文字
     */
    public void showToast(String msg){
        if (mContext == null) {
            return;
        }
        Toast.create(mContext).show(msg);
    }
}