android studio for android learning (九) android之Adapter用法
16lz
2021-12-27
1什么是Adapter?
Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(List View,Grid View)等地方都需要用到Adapter。如下图直观的表达了Data、Adapter、View三者的关系:
2.所有的adapter如下所示
比较常用的有 Base Adapter,Impleader,Adapter,Counteradaptation等。
- BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;
- ArrayAdapter支持泛型操作,最为简单,只能展示一行字。
- SimpleAdapter有最好的扩充性,可以自定义出各种效果。
- SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。
如果想得到各个adapter的详细信息可以参考官网教程
3.举例来研究具体的adapter应用
3.1 ArrayAdapter的应用,注意它支持泛型操作,最为简单,只能展示一行字
方法一不用布局文件xml,直接继承ListActivity
package com.dragon.testevent;import android.app.ListActivity;import android.os.Bundle;import android.widget.ArrayAdapter;public class MainActivity extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); String[] strs = {"A","B","C","D","E","F","G"}; //ArrayAdapter有三个参数,第一是对象,第二是List的格式,第三个是List的内容 //android.R.layout.simple_list_item_1 自带布局,还有android.R.layout.simple_list_item_multiple_choice, android.R.layout.simple_list_item_checked,android.R.layout.simple_list_item_single_choice等 ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,strs); setListAdapter(adapter);//将当前显示到listView中 }}
效果图
方法2:继承Activity,ListActivity和普通的Activity相比,ListView做了许多显示方面的优化,其它一样
package com.dragon.testevent;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.ListView;import java.util.ArrayList;import java.util.List;public class MainActivity extends Activity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); listView = new ListView(this); listView.setAdapter(new ArrayAdapter(this,android.R.layout.simple_expandable_list_item_1,getData())); setContentView(listView); } private List getData(){ List data = new ArrayList(); data.add("what's wrong?"); data.add("let me know."); data.add("why not?"); data.add("you are right."); return data; }}
大家可以对比上面两种方式有什么不一样,下面是效果图
3.2 simpleAdapter的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView,还可以放上Button,CheckBox等等。下面的代码都直接继承了ListActivity
下面是activity_main.xml的代码。
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:gravity="center_horizontal" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.dragon.testevent.MainActivity"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/img" android:layout_margin="5dp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/title" android:textColor="#ffffff" android:textSize="20sp"/>LinearLayout>
对应的java代码
package com.dragon.testevent;import android.app.ListActivity;import android.os.Bundle;import android.widget.SimpleAdapter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class MainActivity extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); SimpleAdapter adapter = new SimpleAdapter(this, getData(), R.layout.activity_main,new String[]{"title","img"},new int[] {R.id.title,R.id.img}); setListAdapter(adapter); } private List
下面是效果图
3.3 一定要以数据库作为数据源的时候,才能使用SimpleCursorAdapter。这里不在举例说明。
reference:
1. http://www.cnblogs.com/devinzhang/archive/2012/01/20/2328334.html
更多相关文章
- Android中SlidingDrawer介绍【安卓进化三十四】
- AsyncTask实例代码演示Android异步任务
- Android中String资源文件的String.format方法(java)
- Android简明开发教程九:创建应用程序框架
- 面试题
- 查看Sqlite 数据库
- 《第一行代码——Android》
- 第二章:根据oschina开源的app代码快速构建自己站点的ANDROID APP
- Android(安卓)的源代码结构