1, 昨天的成就:
a) 完成的任务:失物招领页面完善,框架接近完美
b) 所花时间:6h
c) 还剩余2h
2, 遇到的困难:
a) 算法整理很困难,初步认为先用标签,更改了表结构,让表结构接近完美,可以充分通过表信息,进行对每一个用户进行建表,以此,充分得知用户的喜好,再根据这些喜好,进行推荐。
3, 今天的任务:
a) 转战表白墙设计

1 package com.weicent.android.csma.adapter;
2
3 import android.content.Context;
4 import android.util.SparseArray;
5 import android.view.View;
6 import android.view.ViewGroup;
7 import android.widget.BaseAdapter;
8
9 import java.util.ArrayList;
10 import java.util.List;
11
12
13 /**
14 * 泛型数据适配器
15 */
16 public abstract class SimpleBaseAdapter<T> extends BaseAdapter {
17 protected Context context;
18 protected List<T> data;
19 protected boolean busy = false;
20
21 public SimpleBaseAdapter(Context context, List<T> data) {
22 this.context = context;
23 this.data = data == null ? new ArrayList<T>() : data;
24 }
25
26 @Override
27 public int getCount() {
28 return data.size();
29 }
30
31 @Override
32 public T getItem(int position) {
33 if (position >= data.size())
34 return null;
35 return data.get(position);
36 }
37
38 @Override
39 public long getItemId(int position) {
40 return position;
41 }
42
43 /**
44 * 该方法需要子类实现,需要返回item布局的resource id
45 *
46 * @return
47 */
48 public abstract int getItemResource();
49
50 /**
51 * 滑动状态
52 *
53 * @param busy
54 */
55 public void setBusy(boolean busy) {
56 this.busy = busy;
57 }
58
59 /**
60 * 使用该getItemView方法替换原来的getView方法,需要子类实现
61 *
62 * @param position
63 * @param convertView
64 * @param parent
65 * @param holder
66 * @return
67 */
68 public abstract View getItemView(int position, View convertView, ViewHolder holder);
69
70 //public abstract View getItemView(int position, View convertView);
71 @SuppressWarnings("unchecked")
72 @Override
73 public View getView(int position, View convertView, ViewGroup parent) {
74 ViewHolder holder;
75 if (null == convertView) {
76 convertView = View.inflate(context, getItemResource(), null);
77 holder = new ViewHolder(convertView);
78 convertView.setTag(holder);
79 } else {
80 holder = (ViewHolder) convertView.getTag();
81 }
82 return getItemView(position, convertView, holder);
83 }
84
85 //通过布局ID并使用布局中的ID识别控件
86 public class ViewHolder {
87 private SparseArray<View> views = new SparseArray<>();
88 private View convertView;
89
90 public ViewHolder(View convertView) {
91 this.convertView = convertView;
92 }
93
94 @SuppressWarnings("unchecked")
95 public <T extends View> T getView(int resId) {
96 View v = views.get(resId);
97 if (null == v) {
98 v = convertView.findViewById(resId);
99 views.put(resId, v);
100 }
101 return (T) v;
102 }
103 }
104
105 //添加Item
106 public void addAll(List<T> elem) {
107 data.addAll(elem);
108 notifyDataSetChanged();
109 }
110
111 //插入Item
112 public void insert(List<T> elem) {
113 data.addAll(0, elem);
114 notifyDataSetChanged();
115 }
116
117 //移除来自T 也就是model的Item
118 public void remove(T elem) {
119 if (elem != null) {
120 data.remove(elem);
121 }
122 notifyDataSetChanged();
123 }
124
125 //移除来自index 索引的Item
126 public void remove(int index) {
127 data.remove(index);
128 notifyDataSetChanged();
129 }
130
131 //替换所有Item
132 public void update(List<T> elem) {
133 if (elem != null) {
134 data.clear();
135 data.addAll(elem);
136 }
137 notifyDataSetChanged();
138 }
139
140 //清除全部的Item
141 public void clearAll() {
142 data.clear();
143 notifyDataSetChanged();
144 }
145 }
来源:https://www.cnblogs.com/smartisn/p/10804794.html