适配器

android的适配器:将数据绑定到视图上去,以何种方式来展示显示的格式。其作用其实是连接数据和AdpterView的桥梁。

理清楚 数据源,AdpterView,适配器之间的关系

AdpterView:Gallery,ListView和Spinner,Gridview等是AdapterView的子类。

通常的,我们有使用三个适配器:ArrayAdpter, SimpleAdpter,SimpleCursorAdpter.它们都继承自BaseAdpter.

重点关心它们的数据源

ArrayAdpter:实现简单的listview的数据绑定,默认情况下绑定每个对象的toString值到layout中预先定义好的Textview上。注意这个参数的顺序和意义就行了,this表示上写文。ArrayAdapter<String>(this,Android.R.Layout.Simple_List_Item_1,sex);这边注意一下,继承了listactivity,该activity只能有一个listview,已经封装了一个listview在其中,所以可以不需要setcontview()方法来绑定布局。关于listactivty的用法读者可以找点资料看看。

public class Example extends ListActivity{
                    String[] sex = new String(){"男",“女”}//数据源
                    ArrayAdapter<String>  adapter;//数组适配器,用的是泛型
                    public voidonCreate(Bundle SavedInstanceState){
                    super.onCreate(SavedInstanceStat);
                    //在对适配器初始化的时候,顺便把数据源装载到适配里,                                              
                  //this.Android.R.Layout.Simple_List_Item_1这句话的意思是将数据源以系统定义好的样式放           到适配器里.            
                   adapter=newArrayAdapter<String>(this,Android.R.Layout.Simple_List_Item_1,sex);
                   this.setAdapter(adapter);//这是一个控件类,所以可以直接将适配器绑定到本身对象中。
                        }
                }

 

SimpleAdpter:notifyDataSetChange()可以刷新adpterview上的数据,相当于html中页面重加载一样。这了也注意SimpleAdapter(this, mylist,//数据来源 R.layout.my_listitem,// 每行的布局//动态数组与ListItem对应的子项。可以通过对listview.setOnItemClickListener来设置对每列的监听事件。         

                      new   String[]{"ItemTitle", "ItemText"}, //ListItem的XML文件里面的两个TextView ID  new int[]  {R.id.ItemTitle,R.id.ItemText});

                    

   List作为数据源,填充的是SimpleAdapter
                        ListView list = (ListView)findViewById(R.id.MyListView);       
                       //生成动态数组,并且转载数据
                      ArrayList<HashMap<String, String>> mylist = newArrayList<HashMap<String, String>>();
                      for(int i=0;i<30;i++)
                              {
                                       HashMap<String, String>map = new HashMap<String, String>();
                                       map.put("ItemTitle","This is Title.....");
                                       map.put("ItemText","This is text.....");
                             mylist.add(map);
                             }
                    //生成适配器,数组===》ListItem
             SimpleAdapter mSchedule = new SimpleAdapter(this, //没什么解释 mylist,//数据来源      R.layout.my_listitem,//ListItem的XML实现 //动态数组与ListItem对应的子项          

                      new   String[]{"ItemTitle", "ItemText"}, //ListItem的XML文件里面的两个TextView ID  new int[]  {R.id.ItemTitle,R.id.ItemText});
                     //添加并且显示
                      list.setAdapter(mSchedule);
                    }

 

扫描二维码关注公众号,回复: 657572 查看本文章

SimpleCursorAdpter:

SimpleCursorAdapter一般主要用于数据库,它的数据来源一般都是数据库查询得到的Cursor 我们来看下面的例子:
                    String uriString = “content://contacts/people/”;

                     Cursor myCursor =managedQuery(Uri.parse(uriString), null, null, null, null);
          String[] fromColumns = new String[]{People.NUMBER, People.NAME};
                    int[] toLayoutIDs = new int[] {R.id.nameTextView, R.id.numberTextView};
                   SimpleCursorAdapter myAdapter;
                   myAdapter=newSimpleCursorAdapter(this,R.layout.simplecursorlayout,myCursor,fromColumns,
                   toLayoutIDs);//传入当前的上下文、一个layout资源,一个游标和两个数组:一个包含使用的列   
                   //的名字,另一个(相同大小)数组包含View中的资源ID,用于显示相应列的数
                   据值。
                   myListView.setAdapter(myAdapter);
我们把一个游标绑定到了ListView上,并使用自定义的layout显示来显示每一个Item。

 

猜你喜欢

转载自csu-10086.iteye.com/blog/1913839