Android 常用适配器

常用适配器:均继承自BaseAdapter

  1. ArrayAdapter
  2. SimpleAdapter
  3. SimpleCursorAdapter

适配器的定义:把数据与界面绑定起来。适配器连接后端数据与前端显示的接口,把数据弄得更合适,便于在View上显示。

一、ArrayAdapter

1、定义:数组适配器,将数组的多个值包装成列表项,只能显示一行文字,是最简单的适配器。
2、数据源:String[] 或List

例一:以String[]为数据源

 		//字符串数组,作为数据源
 		String[] ctype=new String[]{"全部","美术","音乐","体育"};
        //设置常量(final)数组适配器,内含元素为字符串,第一个参数this为上下文指针
        // 第二个参数android.R.layout.simple_spinner_item为android提供的外观形式,第三个参数为将数据源装载入适配器中。
        final ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,ctype);
        //设置下拉菜单样式,android.R.layout.simple_spinner_dropdown_item为android提供的外观样式
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        //获取下拉列表框
        Spinner spinner= (Spinner) findViewById(R.id.spinner);
        //将ArrayAdapter 添加Spinner 对象中
        spinner.setAdapter(adapter);
       //事件监听器,此时为:项目被选择时监听器
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                //获取选中值,并将其变成字符串。
                String str = adapterView.getItemAtPosition(i).toString();
                //输出
                Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

    }

例二:以List为数据源


        int[] imageid=new int[]{
                R.drawable.t1, R.drawable.t2, R.drawable.t3,
                R.drawable.t4, R.drawable.t5, R.drawable.t6,
                R.drawable.t7, R.drawable.t8, R.drawable.t9
        };

        String[] title=new String[]{
            "陈1","陈2","陈3","陈4","陈5","陈6","陈7","陈8","陈9"
        };
        //数据源为List
        List<Map<String,Object>> listitem=new ArrayList<Map<String,Object>>();
        //将数据放入List
        for(int i=0;i<imageid.length;i++)
        {
            Map<String,Object> map= new HashMap<String,Object>();
            map.put("image",imageid[i]);
            map.put("name",title[i]);
            listitem.add(map);
        }
        //设置并将数据放入适配器,第一个参数为上下文指针,第二个参数为数据来源,第三个参数为XML实现文件
        //第四个参数为List中的两个子项,第五个参数为listitem中的两个TextView ID
        SimpleAdapter adapter=new SimpleAdapter(this,listitem,R.layout.main,new String[]{"name","image"}
            ,new int[]{R.id.title,R.id.image});
        //获取xml中的listview
        ListView listview= (ListView) findViewById(R.id.listview);
        //将适配器放入listview中
        listview.setAdapter(adapter);
        //设置事件监听器
        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Map<String,Object> map=(Map<String,Object>)adapterView.getItemAtPosition(i);
                Toast.makeText(MainActivity.this, map.get("name").toString(), Toast.LENGTH_LONG).show();
            }
        });
    }

二、SimpleAdapter

1、SimpleAdapter有最好的扩充性,可以自定义出各种效果
2、数据源:String[] 或List
例子同上,将ArrayAdapter改成SimpleAdapter即可。

三、SimpleCursorAdapter

1、定义:SimpleCursorAdapter一般主要用于数据库,它的数据来源一般都是数据库查询得到的Cursor。

//因为还没学到,暂且留空。

四、自定义适配器

1、定义:DIY一个适配器,继承自BaseAdapter。

发布了29 篇原创文章 · 获赞 1 · 访问量 3804

猜你喜欢

转载自blog.csdn.net/weixin_43786756/article/details/104225442