码迷,mamicode.com
首页 > 移动开发 > 详细

java泛型操作复习,以及讲解在android中使用的场景

时间:2015-09-24 22:35:03      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:

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提供的新特性;主要是为了解决数据类型的安全性问题,是在类声明的时候通过一个标示表示类中某个属性的类型或者是某个方法的返回值以及参数类型。这样在类声明或者实例化的时候只要指定好需要的类型即可。

 

java泛型操作复习,以及讲解在android中使用的场景

标签:

原文地址:http://www.cnblogs.com/androidsuperman/p/4836713.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!