android studio for android learning (九) android之Adapter用法
2016-07-01 10:58
183 查看
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<String> adapter = new ArrayAdapter<String>(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<String>(this,android.R.layout.simple_expandable_list_item_1,getData())); setContentView(listView); } private List<String> getData(){ List<String> data = new ArrayList<String>(); 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<Map<String,Object>> getData(){ List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); Map<String,Object> map = new HashMap<String,Object>(); map.put("title","it time to go"); map.put("img",R.drawable.plane); list.add(map); map = new HashMap<String,Object>(); map.put("title","whtch man, you know"); map.put("img",R.drawable.plane); list.add(map); map = new HashMap<String ,Object>(); map.put("title","the game of power"); map.put("img",R.drawable.plane); list.add(map); return list; } }
下面是效果图
3.3 一定要以数据库作为数据源的时候,才能使用SimpleCursorAdapter。这里不在举例说明。
reference:
1. /article/4783913.html
相关文章推荐
- android:configChanges属性
- Android Activity和Adapter通过接口交互
- Android 自定义View (三部曲)
- android textView跑马灯效果
- Android clipChildren用法
- Android PieChart 饼图控件
- android alarm driver &framework 关键流程
- Activity管理 退出登录 或退出程序
- 6.0、Android Studio性能优化工具
- 6.0、Android Studio性能优化工具
- Error-Expected resource of type styleable [ResourceType]
- android studio生成jar包
- Android MTK 设置开机启动自定义Launcher Home键换出Launcher切换
- android studio 使用git添加远程库(这里用Github)
- 【Android】Android中 Paint 字体、粗细等属性的一些设置
- Android实战技巧之四十九:Usb通信之USB Host
- android 5.0以上状态栏标题栏颜色属性
- Android获取Ip地址
- R cannot be resolved to a variable
- android 影响开机速度因素