原址:http://www.eoeandroid.com/thread-48866-1-1.html http://hi.baidu.com/123330524/blog/item/dba0b8cf0f05be36b700c855.html Android是完全遵循MVC模式设计的框架,Activity是Controller,layout是View
因为layout五花八门,很多数据都不能直接绑定上去,所以Android引入了Adapter这个机制作为复杂数据的展示的转换载体,所以各种Adapter只不过是转换的方式和能力不一样而已,没什么大不了的
不多说,今天来看下几种常用的Adapter:
数据 源不同则适配器不同
1. String[]: ArrayAdapter
  • ArrayAdapter
  • SimpleAdapter
  • SimpleCursorAdapter
  • SimpleExpandableListAdapter
  • SimpleCursorTreeAdapter
例子就不贴了,API DEMO里大把是,自己copy去,我就说下我的理解和他们的区别


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代码
  1. public class List1 extends Activity {
  2. private ListVeiw listView;
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. listView=new ListVeiw(this);
  7. listView.setAdapter(new ArrayAdapter<String>(this,
  8. android.R.layout.simple_list_item_1, mStrings));
  9. setContentVieww(listView);
  10. }
  11. private String[] mStrings = {
  12. "Abbaye de Belloc" , "Abbaye du Mont des Cats" ,
  13. "Acorn" , "Adelost" , "Affidelice au Chablis" ,
  14. "Aisy Cendre" , "Allgauer Emmentaler" , "Alverca" ,
  15. "Ami du Chambertin" , "Anejo Enchilado" , "Anneau
  16. "Aragon" , "Ardi Gasna" , "Ardrahan" , "Armenian
  17. "Asadero" , "Asiago" , "Aubisque Pyrenees" , "Autun" ,
  18. "Babybel" , "Baguette Laonnaise" , "Bakers" , "Bal" };
  19. }
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代码
  1. public class List2 extends Activity {
  2. private ListView listView;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. listView=new ListView(this);
  7. Cursorc=getContentResolver().query(People.CONTENT_URI,
  8. null, null, null, null);
  9. startManagingCursor(c);
  10. ListAdapter adapter = new SimpleCursorAdapter(this,
  11. android.R.layout.simple_list_item_1,
  12. c,
  13. new String[] {People.NAME} ,
  14. new int[] {android.R.id.text1});
  15. listView.setAdapter(adapter);
  16. setContentView(listView);
  17. }
  18. }
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代码
  1. public class List3 extends ListActivity {
  2. List<Map<String, Object>> list;
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. list = getListForSimpleAdapter(); //list为数据集合
  7. SimpleAdapter adapter = new SimpleAdapter(this, list,
  8. R.layout.item,
  9. new String[] { "BigText" , "LittleText" , "img" },
  10. new int[] { R.id.BigText,R.id.LittleText, R.id.img });
  11. //可以想成把一个放好数据的布局文件放入本界面中
  12. setListAdapter(adapter);
  13. }
  14. private List<Map<String, Object>> getListForSimpleAdapter() {
  15. List<Map<String,Object>> list=newArrayList<Map<String, Object>>( 3 );
  16. Map<String, Object> map = new HashMap<String, Object>();
  17. map.put( "BigText" , "Android" );
  18. map.put( "LittleText" , "Google phone." );
  19. map.put( "img" , R.drawable.n);
  20. list.add(map);
  21. map = new HashMap<String, Object>();
  22. map.put( "BigText" , "Lenovo" );
  23. map.put( "LittleText" , "Ophone" );
  24. map.put( "img" , R.drawable.o);
  25. list.add(map);
  26. map = new HashMap<String, Object>();
  27. map.put( "BigText" , "Droid" );
  28. map.put( "LittleText" , "Motorola" );
  29. map.put( "img" , R.drawable.droid);
  30. list.add(map);
  31. return list;
  32. }
  33. }

更多相关文章

  1. Drawer实现左右侧滑DrawerLayout
  2. Android(安卓)CardView+RecyclerView实现卡片列表
  3. Android创建和使用数据库详细指南(7)
  4. Android(安卓)pulltorefresh上拉下拉刷新加载
  5. Android使用LocalSocket抓取数据
  6. Android(安卓)JNI入门第五篇——基本数据类型使用
  7. Android(安卓)布局之GridLayout
  8. Day03
  9. android 上面js java数据互传

随机推荐

  1. Ubuntu下建立Android开发环境
  2. Android Graphics - 3 BufferQueue 和 Gr
  3. Android 4.0 Launcher2源码分析——启动
  4. Android中imageView图片放大缩小及旋转功
  5. Android 中文 API(123) —— AbsListView
  6. AndroidUI:Android的Holo Theme
  7. Android Google Map实例 - MD5 、Google
  8. android 细节之 旋转动画
  9. Android(安卓)使用 DownloadManager 管理
  10. 个人文章汇总