/
TravelingAdapter.java
128 lines (108 loc) · 4.07 KB
/
TravelingAdapter.java
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package com.sunfusheng.StickyHeaderListView.adapter;
import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.sunfusheng.StickyHeaderListView.R;
import com.sunfusheng.StickyHeaderListView.model.TravelingEntity;
import com.sunfusheng.StickyHeaderListView.util.ToastUtil;
import com.sunfusheng.glideimageview.GlideImageView;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by sunfusheng on 16/4/20.
*/
public class TravelingAdapter extends BaseListAdapter<TravelingEntity> {
private boolean isNoData;
private int mHeight;
public static final int ONE_SCREEN_COUNT = 8; // 一屏能显示的个数,这个根据屏幕高度和各自的需求定
public static final int ONE_REQUEST_COUNT = 10; // 一次请求的个数
public TravelingAdapter(Context context) {
super(context);
}
public TravelingAdapter(Context context, List<TravelingEntity> list) {
super(context, list);
}
// 设置数据
public void setData(List<TravelingEntity> list) {
clearAll();
addALL(list);
isNoData = false;
if (list.size() == 1 && list.get(0).isNoData()) {
// 暂无数据布局
isNoData = list.get(0).isNoData();
mHeight = list.get(0).getHeight();
} else {
// 添加空数据
if (list.size() < ONE_SCREEN_COUNT) {
addALL(createEmptyList(ONE_SCREEN_COUNT - list.size()));
}
}
notifyDataSetChanged();
}
// 创建不满一屏的空数据
public List<TravelingEntity> createEmptyList(int size) {
List<TravelingEntity> emptyList = new ArrayList<>();
if (size <= 0) return emptyList;
for (int i=0; i<size; i++) {
emptyList.add(new TravelingEntity());
}
return emptyList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// 暂无数据
if (isNoData) {
convertView = mInflater.inflate(R.layout.item_no_data_layout, null);
AbsListView.LayoutParams params = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, mHeight);
RelativeLayout rootView = ButterKnife.findById(convertView, R.id.rl_root_view);
rootView.setLayoutParams(params);
return convertView;
}
// 正常数据
final ViewHolder holder;
if (convertView != null && convertView instanceof LinearLayout) {
holder = (ViewHolder) convertView.getTag();
} else {
convertView = mInflater.inflate(R.layout.item_travel, null);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
}
TravelingEntity entity = getItem(position);
holder.llRootView.setVisibility(View.VISIBLE);
if (TextUtils.isEmpty(entity.getType())) {
holder.llRootView.setVisibility(View.INVISIBLE);
return convertView;
}
final String title = entity.getFrom() + entity.getTitle() + entity.getType();
holder.tvTitle.setText(title);
holder.tvRank.setText("排名:" + entity.getRank());
holder.givImage.loadImage(entity.getImage_url(), R.color.font_black_6);
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ToastUtil.show(mContext, title);
}
});
return convertView;
}
static class ViewHolder {
@BindView(R.id.ll_root_view)
LinearLayout llRootView;
@BindView(R.id.giv_image)
GlideImageView givImage;
@BindView(R.id.tv_title)
TextView tvTitle;
@BindView(R.id.tv_rank)
TextView tvRank;
ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
}