Android Adapter的应用

AdapterView
Android中AdapterView用于显示数据.简单来说就是作为容器载入Adapter
AdapterView继承自ViewGroup,也属于容器类,代表的子类有ListView,GridView,Spinner,Gallery.


Adapter
Android中Adapter用于存储数据及数据的一些信息(显示方式等),代表的子孙类有ArrayAdapter,CursorAdapter,SimpleAdapter.
1.SimpleCursorAdapter(继承自CursorAdapter)
SimpleCursorAdapter的构造函数:
SimpleCursorAdapter(Context context, int itemLayout, Cursor c, String[] from, int[] to);
SimpleCursorAdapter把Cursor中的每一行都转换到子视图中,子视图使用itemLayout表示的XML资源文件作为布局.
另外,还需要提供一个字符串数组from,用于表示Cursor中要显示的列,而整数数组to则表示哪一列对应与布局中的哪一个控件.因此,from的长度和to的长度总是相等的.
2.ArrayAdapter
ArrayAdapter是Android最简单的适配器,适用于列表控件.
ArrayAdapter的构造函数:
ArrayAdapter(Context context, int itemLayout, Object[] data);
ArrayAdapter只需要一个子视图的布局和一组数据就可以了.每个子视图只显示一项数据.
ArrayAdapter还提供了其他构造函数,方便实现更加复杂的情况.
另外,ArrayAdapter还支持动态修改适配器中的数据,提供了add(),insert(),remove(),sort()等方法,在数据发生变化之后还应该调用ArrayAdapter的notifyDataSetChanged()方法来同步ArrayAdapter和对应的AdapterView.


Adapter与AdapterView的结合ListView
ListView垂直显示一组项,如果项数量超出屏幕显示区域,则可以使用滚动条.通常在ListActivity中使用ListView,ListActivity包含了一个ListView,提供了setListAdapter()方法来为ListView设置Adapter
public class AndroidAdapterActivity extends ListActivity {
    @Override     
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
        Cursor c ;
        CursorLoader loader = new CursorLoader(this, People.CONTENT_URI, null, null, null, People.NAME);
        c = loader.loadInBackground();
        String[] cols = new String[]{People.NAME};
        int[] view = new int[]{android.R.id.text1};
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, c, cols, view);
        setListAdapter(adapter);
        getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id){
                //Toast.makeText(AndroidAdapterActivity.this, "hello:"+position, 1000).show();
                Uri selected = ContentUris.withAppendedId(People.CONTENT_URI, id);
                Intent intent = new Intent(Intent.ACTION_VIEW, selected);
                startActivity(intent);
            }
        });
    }
}


GridView
GridView的使用模式是首先在XML布局中定义GridView,然后使用ListAdapter把数据绑定到GridView中.
与ListView不同的是,GridView是二维的,扩展了,不需要在ListActivity中使用,GridView无法多选,而ListView可以设置多选或单选模式或none

Spinner
Spinner特点是它表面上看时一个TextView,点击它后才会出现下拉表,而子项布局是通过函数setDropDownViewResource(int id)来设置.Spinner提供了两种选择模式,一种是下拉,一种是弹出单选框.

Gallery
Gallery是一个水平的滚动的列表控件,焦点始终位于列表中央.Gallery通常用于显示图像资源.


自定义适配器
Android提供了一个BaseAdapter抽象类,方便用户扩展开发自己的适配器,其实Android提供的其他适配器都是基于BaseAdapter的.

猜你喜欢

转载自kenshenchan.iteye.com/blog/1684900
今日推荐