- 浏览: 85698 次
- 性别:
- 来自: 成都
最新评论
Android是完全遵循MVC模式设计的框架,Activity是Controller,layout是View
因为layout五花八门,很多数据都不能直接绑定上去,所以Android引入了Adapter这个机制作为复杂数据的展示的转换载体,所以各种Adapter只不过是转换的方式和能力不一样而已,没什么大不了的
不多说,今天来看下几种常用的Adapter:
因为layout五花八门,很多数据都不能直接绑定上去,所以Android引入了Adapter这个机制作为复杂数据的展示的转换载体,所以各种Adapter只不过是转换的方式和能力不一样而已,没什么大不了的
不多说,今天来看下几种常用的Adapter:
数据
源不同则适配器不同
1. String[]: ArrayAdapter
1. String[]: ArrayAdapter
- ArrayAdapter
- SimpleAdapter
- SimpleCursorAdapter
- SimpleExpandableListAdapter
- SimpleCursorTreeAdapter
ArrayAdapter:顾名思义,专门负责将数组结构的数据适配进view中的,最简单,常用于demo...⊙﹏⊙b汗...和Spinner ,AutoCompleteTextView 中
SimpleAdapter:从名字上看不出什么所以然,其他这个东西很给力,在正常情况下他的灵活性最好,扩展性也最强(ViewBinder) ListView 中
SimpleCursorAdapter:拥有上者的扩展性和灵活性,同时可以将Cursor进行适配
SimpleExpandableListAdapter:这玩意就漏也了,只能适配到TextView上,在简单的UI中可以为ExpandableListView提供数据
SimpleCursorTreeAdapter:这是Adapter的终极Boss...-_-|||... ViewBinder+Cursor+Expandable...三位一体
2. 数据库
Cursor: SimpleCursorAdapter
3. List<Map
<String,?>>: SimpleAdapter
ArrayAdapter 需要把数据放入一个数组以便显示;
android .R.layout.simple_list_item_1是系统 定义 好的布局文件 只显示一行文字
SimpleCursorAdapter 是和数据库有关的东西,而sqlite数据库所要求的 自动 增长的 id 必须是 _id这中形式
SimpleAdapter 能定义各种各样的布局出来,可以放上ImageView (图片),还可以放上Button(按钮),CheckBox(复选框)
Arrayadapter代码
- public class List1 extends Activity {
- private ListVeiw listView;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- listView=new ListVeiw(this);
- listView.setAdapter(new ArrayAdapter<String>(this,
- android.R.layout.simple_list_item_1, mStrings));
- setContentVieww(listView);
- }
- private String[] mStrings = {
- "Abbaye de Belloc" , "Abbaye du Mont des Cats" ,
- "Acorn" , "Adelost" , "Affidelice au Chablis" ,
- "Aisy Cendre" , "Allgauer Emmentaler" , "Alverca" ,
- "Ami du Chambertin" , "Anejo Enchilado" , "Anneau
- "Aragon" , "Ardi Gasna" , "Ardrahan" , "Armenian
- "Asadero" , "Asiago" , "Aubisque Pyrenees" , "Autun" ,
- "Babybel" , "Baguette Laonnaise" , "Bakers" , "Bal" };
- }
public class List1 extends Activity { private ListVeiw listView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); listView=new ListVeiw(this); listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mStrings)); setContentVieww(listView); } private String[] mStrings = { "Abbaye de Belloc", "Abbaye du Mont des Cats", "Acorn", "Adelost", "Affidelice au Chablis", "Aisy Cendre", "Allgauer Emmentaler", "Alverca", "Ami du Chambertin", "Anejo Enchilado", "Anneau "Aragon", "Ardi Gasna", "Ardrahan", "Armenian "Asadero", "Asiago", "Aubisque Pyrenees", "Autun", "Babybel", "Baguette Laonnaise", "Bakers", "Bal"}; }
Simplecursoradapter代码
- public class List2 extends Activity {
- private ListView listView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- listView=new ListView(this);
- Cursorc=getContentResolver().query(People.CONTENT_URI,
- null, null, null, null);
- startManagingCursor(c);
- ListAdapter adapter = new SimpleCursorAdapter(this,
- android.R.layout.simple_list_item_1,
- c,
- new String[] {People.NAME} ,
- new int[] {android.R.id.text1});
- listView.setAdapter(adapter);
- setContentView(listView);
- }
- }
public class List2 extends Activity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); listView=new ListView(this); Cursorc=getContentResolver().query(People.CONTENT_URI, null, null, null, null); startManagingCursor(c); ListAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, c, new String[] {People.NAME} , new int[] {android.R.id.text1}); listView.setAdapter(adapter); setContentView(listView); } }
Simpleadapter代码
- public class List3 extends ListActivity {
- List<Map<String, Object>> list;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- list = getListForSimpleAdapter(); //list为数据集合
- SimpleAdapter adapter = new SimpleAdapter(this, list,
- R.layout.item,
- new String[] { "BigText" , "LittleText" , "img" },
- new int[] { R.id.BigText,R.id.LittleText, R.id.img });
- //可以想成把一个放好数据的布局文件放入本界面中
- setListAdapter(adapter);
- }
- private List<Map<String, Object>> getListForSimpleAdapter() {
- List<Map<String,Object>> list=newArrayList<Map<String, Object>>( 3 );
- Map<String, Object> map = new HashMap<String, Object>();
- map.put( "BigText" , "Android" );
- map.put( "LittleText" , "Google phone." );
- map.put( "img" , R.drawable.n);
- list.add(map);
- map = new HashMap<String, Object>();
- map.put( "BigText" , "Lenovo" );
- map.put( "LittleText" , "Ophone" );
- map.put( "img" , R.drawable.o);
- list.add(map);
- map = new HashMap<String, Object>();
- map.put( "BigText" , "Droid" );
- map.put( "LittleText" , "Motorola" );
- map.put( "img" , R.drawable.droid);
- list.add(map);
- return list;
- }
- }
发表评论
-
转 android背景选择器selector用法汇总
2011-04-27 15:23 1352原址:http://blog.sina.com.cn/s/bl ... -
(转)编写Android自定义按钮
2011-04-27 11:07 1214原址:http://marshal.easymorse.com ... -
(转)android button 效果设计
2011-04-26 15:04 1401原址:http://ssd910.blog.163.com/b ... -
(转)消息机制细谈(message handler looper MessageQueue )
2011-04-12 11:20 1061在handler的简单用 ... -
解决:sqlite数据库含有\n的值或者sax解析xml有\n的值付给TextView,显示却不会换行
2011-03-17 23:00 2947遇到个问题,网上也有人问 从sqlite数据库取含有\n的值 ... -
资料分享 android api dev guid中文(Android开发指南中文版.doc)
2011-03-11 14:12 1446资料分享 android api dev guid中文 ... -
apk反编译问题总结(转)
2011-03-09 15:01 2774http://www.eoeandroid.com/thre ... -
PendingIntent和Intent的区别 转
2011-03-04 14:35 1240Notification notification ... -
转:动态添加/删除spinner菜单--ArrlayList与Widget依赖性
2011-02-24 14:28 1757package irdc.ex04_09; import a ... -
Dialog 2种显示方式
2011-02-23 17:35 1342建议用onCreateDialog(int)和 show ... -
转 【通知 Toast详细用法(显示view)】 【android Toast大全(五种情形)建立属于你自己的Toast】
2011-02-11 10:36 3057原文地址: http://www.pocketdigi. ... -
(转 Android UI学习 - Menu)
2011-02-09 14:19 1373标签:Android menu 原创作品,允许转载,转载时 ...
相关推荐
Spinner通过Adapter来绑定数据源,这个数据源可以是ArrayList、Array、Cursor等。在创建Spinner时,需要设置一个Adapter,将数据源转换为视图元素。例如,我们可以使用ArrayAdapter配合String数组来创建一个基本的...
ArrayAdapter<String> adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, items); Spinner spinner = findViewById(R.id.spinner); spinner.setAdapter(adapter); ``` 2. **ArrayList...
它的工作原理是通过一个Adapter(适配器)将数据集与视图绑定,Adapter可以是ArrayList、Cursor或其他数据结构。当你点击Spinner时,它会弹出一个Dropdown List显示所有可用选项,用户可以点击选择一个。 创建...
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 为下拉菜单设置布局 spinner.setAdapter(adapter); ``` ### 3. 监听Spinner的选择事件 为了处理用户在Spinner中的选择,...
2. **创建数据源**:Spinner的数据源可以是ArrayList、Array或Cursor等。最常见的做法是创建一个字符串数组资源,例如在`strings.xml`中定义: ```xml <string-array name="genders"> <item>Male <item>Female ...
1. **创建数据源**:首先,你需要有一个数据源,可以是ArrayList、Array、Cursor等,存储你想要在ListView中展示的数据。 2. **创建Adapter**:根据数据源的类型,选择合适的Adapter,并在Adapter中设置数据。例如...
Spinner的数据通常来自于一个Adapter,可以是ArrayList、Array或Cursor等。例如,我们可以创建一个String数组作为数据源: ```java String[] items = {"Option 1", "Option 2", "Option 3"}; ``` 3. 设置Adapter: ...
2. **数据源准备**: Spinner需要一个数据源,通常可以是ArrayList、Array或者Cursor。例如,我们可以创建一个ArrayList,填充一些选项: ```java ArrayList<String> items = new ArrayList(); items.add("Option ...
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 设置下拉列表的视图 Spinner mySpinner = findViewById(R.id.my_spinner); mySpinner.setAdapter(adapter); ``` 这里的`...
array ast asyncio binascii cmath collections concurrent.futures contextlib datetime decimal distutils email encodings enum faulthandler fileinput hashlib http.client idlelib and IDLE...
21. **Array**: - 数组。 - 一种数据结构,用于存储同类型的数据集合。 22. **Average**: - 平均值。 - 统计学概念,计算一组数值的平均值。 23. **GetInstance**: - 获取实例。 - 通常用于获取单例模式下的...