由于在给ListView设置Adapter的时候每次都要重写BaseAdapter里面的4个方法,比较麻烦,也浪费时间,所以,写了个高大上的Adapter。
public abstract class UCBaseAdapter<T,V> extends BaseAdapter {
protected Context context;
// T是list中存放的数据类型
protected List<T> list;
// V是View的类型
protected V view;// 这里不一定是ListView,比如GridView,CustomListView
public UCBaseAdapter(Context context, List<T> list, V view) {
super();
this.context = context;
this.list = list;
this.view = view;
}
public UCBaseAdapter(Context context, List<T> list) {
super();
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
}
以后再写Adapter的时候,继承UCBaseAdapter就可以少写好多没必要的代码了。如:
class myAdapter extends UCBaseAdapter<String, ListView>
说明list中存放的是字符串信息,View类型是ListView。然后只需要重写里面的getView方法即可。
联网获取数据时,获取到的数据先保存到本地,保存到本地后,再对数据进行处理。用SharedPreferences缓存数据时,获得数据保存数据前都要做些重复的工作,我们可以把这些重复的工作放到一个工具类里面,以减少冗余代码。
联网获得数据时,先判断缓存中是否有数据,然后再从网上获得数据。这样做的原因是:在没有网络的时候,提高用户体验。网络比较慢时也不会出现白板现象,用户体验很好。