自动补全+列表+网格+自定义适配器

本文深入探讨了Android中自定义适配器的使用方法,包括ArrayAdapter、SimpleAdapter以及如何实现自动补全功能。通过具体代码示例,详细解释了适配器的配置、数据源的选择及样式设置,旨在帮助开发者更好地理解和应用这些关键组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

高级View和自定义适配器AutoComplateTextViewArrayAdapter

自动补全

所需适配器:

ArrayAdapter(Adapter)

所需数据源:

String[] object(data)

注意:在配置View的时候要加上 (android:complatethreshold="1")  表示输入一个字符的时候就开始匹配,默认是输入全部

ListViewSimpleAdapter

列表View

所需适配器:

SimpleAdapter

所需数据源:

List<Map<String,Object>>

SimpleAdapter adapter = new SimpleAdapter(

                        this,//上下文

                        data,//数据

                        R.layout.item,//布局

                        from,//数据从哪里来

                        to);//数据到那里去

GridViewSimpleAdapter

网格View

所需适配器:

SimpleAdapter

所需数据源:

List<Map<String,Object>>

SimpleAdapter adapter = new SimpleAdapter(

                        this,//上下文

                        data,//数据

                        R.layout.item,//布局

                        from,//数据从哪里来

                        to);//数据到那里去

样式:

    <!-- android:numColumns="3" 一行3

    android:horizontalSpacing="2dip" 水平间距

        android:verticalSpacing="2dip" 垂直间距

    -->

适配器
->ArrayAdapter   继承BaseAdapter  数据源为字符串数组  

  ArrayAdapter<String>(context,------->上下文

resouce,-------->引用layout

textViewResouce,---->引用layout中的ID

object);------>数据

-->SimpleAdapter         继承 BaseAdapter 数据源为集合对象.并且可以配置对象属性和                                                  item布局中的映射关系

SimpleAdapter(context,------>上下文

data,---------->是一个List<Map<K,V>>集合,存放数据

resoouce,------应用layout

from,------>数据从哪里来  

to);------>数据放到哪里去

自定义适配器

  private class MyAdapter extends BaseAdapter{

            private List<Person> persons;

            private LayoutInflater mInflater;

           

            public MyAdapter(List<Person> persons) {

                        super();

                        this.persons = persons;

                        //得到布局加载器(加载xml布局文件到代码中)

                        mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

                       

                        mInflater = LayoutInflater.from(getApplicationContext());

                       

                        mInflater = getLayoutInflater();

                }

                //得到条目的总数

                @Override

                public int getCount() {

                        // TODO Auto-generated method stub

                        return persons.size();

                }

                //得到指定条目的数据

                @Override

                public Object getItem(int position) {

                        // TODO Auto-generated method stub

                        return persons.get(position);

                }

                //得到条目的id

                @Override

                public long getItemId(int position) {

                        // TODO Auto-generated method stub

                        return position;

                }

                //创建一个item的布局(类似一个工厂)

                @Override

                public View getView(int position, View convertView, ViewGroup parent) {

                        // TODO Auto-generated method stub

                        //1 加载布局(系统给我们提供了一个服务LayoutInflater:布局加载器)

                        View view = mInflater.inflate(R.layout.item, null);

                       

                        //控制布局的背景色

                        if(position%2==0){

                                view.setBackgroundColor(Color.GREEN);

                        }else{

                                view.setBackgroundColor(Color.RED);

                        }

                        //2 得到控件

                        ImageView iv_icon = (ImageView) view.findViewById(R.id.lv_icon);

                        TextView tv_name = (TextView) view.findViewById(R.id.tv_name);

                        TextView tv_number = (TextView) view.findViewById(R.id.tv_number);

                        //3 得到数据

                        Person person = persons.get(position);

                        //4绑定数据给控件

                       

                        iv_icon.setImageResource(person.src);

                        tv_name.setText(person.name);

                        tv_number.setText(person.number);

                        return view;

                }

           

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值