教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

Android培训之AdapterView与Adapter (2)

更新时间:2016年10月31日17时20分 来源:传智播客Android培训 浏览次数:

二:Adapter-->C(控制器)

1:作用

把数据源中数据以某种样式(xml文件)显示在视图中。

2:分类

(1)ArrayAdapter:他只能处理列表项内容全是文本的情况。

       ◆数据源:数组或者List<String>对象或者其他

(2)SimpleAdapter: 他不仅可以处理列表项全是文本的情况,当列表项中还有其他控件时,同样可以处理。

       ◆数据源:只能为List<Map<“键”,“值”>>形式的数据

(3)自定义Adapter:根据xml文件中定义的样式惊醒列表项的填充,适用性最强。

(4)SimpleCursorAdapter:专门用于把游标中的数据映像到列表中(我们以后再来研究)

3:自定义Adapter

1)创建类,继承自BaseAdapter

(2)重写其中的四个方法

①int getCount():返回的是数据源对象的个数,即列表项数

②Object getItem(int position):返回指定位置position上的列表

③long getItemId(int position):返回指定位置处的行ID

View getView():返回列表项对应的视图,方法体中

实例化视图填充器

◆用视图填充器,根据Xml文件,实例化视图

◆根据布局找到控件,并设置属性

◆返回View视图

三:数据填充

1:声明AdapterView对象,根据ID利用findViewById方法找到此对象

2:声明Adapter对象,根据构造方法实例化此对象。具体如下:

(1)ArrayAdapter<数据类型> adapter = new ArrayAdapter<数据类型>(context:一般指当前Activity对象,layout:每个列表项显示的布局,data:数据源变量);

(2)SimpleAdapter adapter = new SimpleAdapter(context:一般指当前Activity对象,data:数据源变量,layout:每个列表项显示的布局,new String[]{}:数据源中的“键”,new int[]{}:显示数据源的控件ID);

   (3)自定义Adapter类 adapter = new 自定义Adapter类构造方法;

3:绑定Adapter对象到Adapter上

AdapterView对象.setAdapter(Adapter对象);

   四:具体应用

1:用ArrayAdapter填充ListView  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class MainActivity extends Activity {
    private ListView lv;// 适配器控件------->V视图
    private ArrayAdapter<String> adapter;// 适配器------>C控制器
    private String[] data = { "我是第1个列表项""我是第2个列表项""我是第3个列表项""我是第4个列表项",
            "我是第5个列表项""我是第6个列表项""我是第7个列表项" };// 数据源-->M
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找到ListView
        lv = (ListView) findViewById(R.id.listView1);
        // 实现适配器,利用系统定义的样式,加载数据源
        adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, data);
        // R.layout.cell 自己定义视图
        // android.R.layout.simple_list_item_1 系统定义视图样式
        // 绑定适配器到适配器控件上
        lv.setAdapter(adapter);
        //处理单击事件:列表项被单击时给出提示信息
        lv.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Toast.makeText(MainActivity.this,
                        "第" + (position + 1) + "项被单击按下", Toast.LENGTH_LONG)
                        .show();
            }
        });
        //处理长时间按下事件:列表项被长时间按下时给出提示信息
        lv.setOnItemLongClickListener(new OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Toast.makeText(MainActivity.this,
                        "第" + (position + 1) + "项被长时间按下", Toast.LENGTH_LONG)
                        .show();
                return true;
            }
        });
    }
}

本文版权归传智播客Android培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客Android培训学院
首发:http://www.itcast.cn/Android
0 分享到:
和我们在线交谈!