标签:
android使用泛型的地方很多,比如集成自BaseAdapter实现封装的Adapter,对常用操作进行封装,但是需要对传进来的数据进行处理,此时就使用到泛型,示例如下:
public abstract class EasyAdapter<T> extends BaseAdapter { private LayoutInflater inflater; private int layoutId; private List<T> mlist = new ArrayList<T>(); public EasyAdapter(Context context, int layoutId, List<T> list) { super(); this.inflater = LayoutInflater.from(context); this.layoutId = layoutId; this.mlist = list; } /** * 往顶部添加数据 * * @param list */ public void add2Head(List<T> list) { mlist.addAll(0, list); notifyDataSetChanged(); } public void clearAll() { mlist.clear(); notifyDataSetChanged(); } public List<T> getAllList() { return mlist; } /** * 往底部添加数据 * * @param list */ public void add2Bottom(List<T> list) { mlist.addAll(list); notifyDataSetChanged(); } public void add2Bottom(T t) { mlist.add(t); notifyDataSetChanged(); } /** * @Title: updateListView * @Description: TODO(更新BaseAdapter中的数据) * @param @param list 设定文件 * @return void 返回类型 * @throws */ public void updateListView(List<T> list) { mlist = list; notifyDataSetChanged(); } @Override public int getCount() { return mlist.size(); } @Override public T getItem(int position) { return mlist.get(position); } @Override public long getItemId(int position) { return position; } /** * 实际显示View的方法,使用抽象方法强制调用者覆写! */ @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = ViewHolder.getViewHolder(parent, convertView, inflater, layoutId); convert(viewHolder, mlist.get(position)); return viewHolder.getConvertView(); } public abstract void convert(ViewHolder viewHolder, T t); }
代码来自我的github:https://github.com/soyoungboy/EasyAnroid/blob/master/EasyAnroid/src/com/soyoungboy/base/adapter/EasyAdapter.java
还有就是比如解析json,json的bean各有不同:
public class GsonImpl extends Json { private Gson gson = new Gson(); @Override public String toJson(Object src) { return gson.toJson(src); } @Override public <T> T toObject(String json, Class<T> claxx) { return gson.fromJson(json, claxx); } @Override public <T> T toObject(byte[] bytes, Class<T> claxx) { return gson.fromJson(new String(bytes), claxx); } @Override public <T> List<T> toList(String json, Class<T> claxx) { Type type = new TypeToken<ArrayList<T>>() {}.getType(); List<T> list = gson.fromJson(json, type); return list; } }
下面着重复习java基础中有关泛型的知识点:
首先:泛型是java1.5提供的新特性;主要是为了解决数据类型的安全性问题,是在类声明的时候通过一个标示表示类中某个属性的类型或者是某个方法的返回值以及参数类型。这样在类声明或者实例化的时候只要指定好需要的类型即可。
标签:
原文地址:http://www.cnblogs.com/androidsuperman/p/4836713.html