ListView的标准写法

ListView的标准写法

a.自定义组合控件写法:一堆相同的控件组合在一起,具有共性
b.抽取系统部分.写成一个XML文件
c.写一个类.继承根布局(LinearLayout、RelativeLayout、FrameLayout、ViewGroup)
d.重写两个构造方法.带一个参数context和带有两个参数.一个参数去调用两个参数的
e.在带有两个参数的构造方法里面,使用打气筒加载布局,给自己打气
    View.inflate(context,R.layout.root,this);
f.定义自定义属性.在res/values/attrs.xml定义自定义属性
    <!-- 为ProgressStateView添加自定义属性 -->
    <declare-styleable name="ProgressStateView">
            <attr name="psvText" format="reference|string" />
    </declare-styleable>
g.在布局里面,先声明命名空间 xmlns:itheima:..../包名称
h.使用自定义控件,包名称+类名称. 自定义属性,以命名空间开头
     <org.itheima.safe.view.ProgressStateView
            android:id="@+id/am_psv_rom"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            itheima:psvText="内存:" />
i.在自定义控件Java类.构造方法里面.得到自定义属性值
    // 设置属性值
    TypedArray ta = context.obtainStyledAttributes(attrs,R.styleable.ProgressStateView);
    String text = ta.getString(R.styleable.ProgressStateView_psvText);
    ta.recycle();

代码()

private class MyAdpter extends BaseAdapter {

    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if (convertView == null) {
            convertView = View.inflate(AppManageActivity.this,
                    R.layout.item_appmanage, null);
            holder = new ViewHolder();
            convertView.setTag(holder);
            holder.ivIcoa = (ImageView) convertView
                    .findViewById(R.id.item_appManage_iv_img);
            holder.tvName = (TextView) convertView
                    .findViewById(R.id.item_appManage_tv_title);
            holder.tvSite = (TextView) convertView
                    .findViewById(R.id.item_appManage_tv_site);
            holder.tvSize = (TextView) convertView
                    .findViewById(R.id.item_appManage_tv_size);

        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        AppBean bean = mData.get(position);
        holder.tvName.setText(bean.name);
        holder.tvSite.setText(bean.isInstallSD ? "内存空间" : "SD卡空间");
        holder.tvSize.setText(Formatter.formatFileSize(
                AppManageActivity.this, bean.size));
        return convertView;
    }

    public long getItemId(int position) {
        return position;
    }

    public Object getItem(int position) {
        if (mData != null) {
            return mData.get(position);
        }
        return null;
    }

    public int getCount() {
        if (mData != null) {
            return mData.size();
        }
        return 0;
    }

    private class ViewHolder {
        TextView tvName;
        TextView tvSite;
        TextView tvSize;

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值