安卓adapter适配器

ArrayAdaapter,SimpleAdapter,BaseAdapter的使用

1. ArrayAdapter

ArrayAdapter<String> adapter = new rrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,data);
listView.setAdapter(adapter);
  • 第一个参数:this这是上下文
  • 第二个参数:这里采用的是系统自带的样式,当让我们也可以自定义
    simple_list_item_1 : 单独一行的文本框
    simple_list_item_2 : 两个文本框组成
    simple_list_item_checked : 每项都是由一个已选中的列表项
    simple_list_item_multiple_choice : 都带有一个复选框
    simple_list_item_single_choice : 都带有一个单选钮

  • 第三个参数:数据资源,数据资源可以是集合,数组或者是数组资源(R文件)

2.SimpleAdapter

SimpleAdapter相对ArrayAdapter就比较高级啦,它可以放置文本和片,功能也比较强大

SimpleAdapter myAdapter = new SimpleAdapter(
            getApplicationContext(), 
            listitem,
            R.layout.list_item,
            new String[]{"img", "text1", "tex1t"},
            new int[]{R.id.imgtou, R.id.name, R.id.says}
            );
ListView listView = (ListView) findViewById(R.id.list_test);
listView.setAdapter(myAdapter);
  • 第一个参数:上下文
  • 第二个参数:数据资源
  • 第三个参数:布局资源
  • 第四个参数:创建一个数组
  • 第五个参数:布局资源中组件的id

3. BaseAdapter

该BaseAdapter是大多数适配器的基类,我们可以自定义,使用起来比较灵活,也是大多数程序猿的大爱

java代码:

class MyBaseAdapter extends BaseAdapter {

    //获取当前items项的大小,也可以看成是数据源的大小
        @Override
        public int getCount() {
            return list.size();
        }

    //根据item的下标获取到View对象
        @Override
        public Object getItem(int position) {
            return list.get(position);
        }

    //获取到items的id
        @Override
        public long getItemId(int position) {
            return position;
        }

  @Override
        public View getView(int position, View convertview, ViewGroup viewGroup) {
        /*ViewHolder通常出现在适配器里,为的是listview滚动的时候快速设置值,而不必每次都重新创建很多对象,从而提升性能。*/
            ViewHolder holder = null;
            if (convertview == null) {
                convertview = View.inflate(TraficLightActivity.this, R.layout.traffic_item, null);
                holder = new ViewHolder();
                holder.road_id = (TextView) convertview.findViewById(R.id.road_id);
                holder.redTime = (TextView) convertview.findViewById(R.id.red_time);
                holder.greenTime = (TextView) convertview.findViewById(R.id.green_time);
                holder.yellowTime = (TextView) convertview.findViewById(R.id.yelow_time);
                convertview.setTag(holder);
            } else {
                holder = (ViewHolder) convertview.getTag();
            }
            mRoadLightInfo = list.get(position);
            //setText要设置的内容:如果是取出来的数据是int类型的,那么,不会直接设置内容
            //会去R类里去找对应的数据,如果没有,就会报资源找不到的异常
            holder.road_id.setText(mRoadLightInfo.getRoadId() + "路口");
            holder.redTime.setText(mRoadLightInfo.getRedTime());
            holder.greenTime.setText(mRoadLightInfo.getGreenTime());
            holder.yellowTime.setText(mRoadLightInfo.getYellowTime());
            return convertview;
        }
    }
    class ViewHolder {
        TextView road_id;
        TextView redTime;
        TextView reenTime;
        TextView yellowTime;
    }

该类采用内部类MyBaseAdapter,该类继承了BaseAdapter,同时重写了四个方法。在是个方法中我们主要是重写getView方法。此外,我们为了不重新创建许多对象,我们采用了ViewHolder类,在该类中我们定义了几个属性。getView方法中我们首先获取view视图,并且获取里面的各个组件,给各个组件赋值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值