用枚举构造完成资源绑定

转载请标注:
披萨大叔的博客 http://blog.csdn.net/qq_27258799/article/details/51512715
如果您觉得这篇文章对您有帮助,请点下文章最下面的赞~

如下图,我们如果想要实现这样一个布局,ListView每个item有两个ImageView和两个TextView,初始化的时候,这些图标资源和文字都要赋值,也就是说,这些资源都是需要我们可以配置的,如果把这些个资源绑定到一起?用一堆数组?用XML?

这里写图片描述

到目前为止,最好的方式我认为还是枚举构造:


public enum ListViewItem{
    /**
     * 待处理工单
     */
    FORHANDLED(R.drawable.group1, R.color.red, R.string.workorder_forHandled, 0, false),
    /**
     * 处理中工单
     */
    HANDLING(R.drawable.group2, R.color.brown, R.string.workorder_handling, 0, false),
    /**
     * 已完成工单
     */
    COMLETE(R.drawable.group3, R.color.darkgray, R.string.workorder_complete, 0, false);

    private int iconResId;
    private int titleResId;
    private int initialCount;
    private boolean hasNew;
    private int colorResId;

    /**
     * @param iconResId
     *            图标资源ID
     * @param colorResId
     *            subName文字颜色
     * @param titleResId
     *            标题资源ID
     * @param initialCount
     *            已经获得的工单数量
     * @param hasNew
     *            是否有新工单
     */
    private WorkOrderGroupEnum(int iconResId, int colorResId, int titleResId, int initialCount, boolean hasNew) {
        this.iconResId = iconResId;
        this.titleResId = titleResId;
        this.initialCount = initialCount;
        this.colorResId = colorResId;
        this.hasNew = hasNew;
    }
 //……Getters方法……
}

如上面代码,我们把各种资源已经可能用到的参数,都作为枚举构造的参数,这样我们在用的时候直接这样:

ListViewItem[] items = ListViewItem.values();

如此,便完成了初始化工作,得到了资源对象。

根据枚举类的特性,枚举类的构造函数只能是private的,只在枚举类初始化的时候调用,所以保证了枚举类的“单例”特性,枚举类的实例默认就是线程安全的,并且可以被自由序列化,所以这也是枚举单例最被推崇的原因。

综上所述,为什么不用枚举类完成资源绑定呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值