Android之Adapter用法总结
1.概念
Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(List View,Grid View)等地方都需要用到Adapter。如下图直观的表达了Data、Adapter、View三者的关系:
Android中所有的Adapter一览:
由图可以看到在Android中与Adapter有关的所有接口、类的完整层级图。在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展。比较常用的有 Base Adapter,Impleader,Adapter,Counteradaptation等。
BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;
ArrayAdapter支持泛型操作,最为简单,只能展示一行字。
SimpleAdapter有最好的扩充性,可以自定义出各种效果。
SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。
1 ArrayAdapter:
最简单的显示一个ListView
同理也可以这样子来写:
后者的好处是可以动态的添加
2:SimpleAdapter
这种的用法好处多多,可以应用到很多的场合,图片,文字都没有问题,如果实现以后要完成的功能不是特别复杂的话,都可以应用
剩下的两种Adapter可以放到下一次讲解中去
1.概念
Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(List View,Grid View)等地方都需要用到Adapter。如下图直观的表达了Data、Adapter、View三者的关系:
Android中所有的Adapter一览:
由图可以看到在Android中与Adapter有关的所有接口、类的完整层级图。在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展。比较常用的有 Base Adapter,Impleader,Adapter,Counteradaptation等。
BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;
ArrayAdapter支持泛型操作,最为简单,只能展示一行字。
SimpleAdapter有最好的扩充性,可以自定义出各种效果。
SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。
1 ArrayAdapter:
最简单的显示一个ListView
((ListView)findViewById(R.id.listView1)).setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new String[]{"张三","李四","王五"}));
同理也可以这样子来写:
private ListView listview ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listview = (ListView) findViewById(R.id.listView1); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); listview.setAdapter(adapter); adapter.add("黎三"); adapter.clear(); adapter.add("大帅哥"); adapter.add("太帅了"); adapter.remove("太帅了"); }
后者的好处是可以动态的添加
2:SimpleAdapter
这种的用法好处多多,可以应用到很多的场合,图片,文字都没有问题,如果实现以后要完成的功能不是特别复杂的话,都可以应用
package com.example.arrayada; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; public class SimpleActivity extends Activity implements OnItemClickListener,OnClickListener{ private ListView listview ; SimpleAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_main); listview = (ListView) findViewById(R.id.listView2); adapter = new SimpleAdapter(this, getdate(), R.layout.simple_list, new String[]{"img","name","age","sex","nengli"}, new int[]{R.id.img1,R.id.te1,R.id.te2,R.id.te3,R.id.te4}); listview.setAdapter(adapter); listview.setOnItemClickListener(this); // findViewById(R.id.but1).setOnClickListener(this); } private List<Map<String, Object>> getdate() { List simplelist = new ArrayList<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>(); map.put("img", R.drawable.pkq); map.put("name", "皮卡丘"); map.put("age", "2"); map.put("sex", "男"); map.put("nengli", "五星"); simplelist.add(map); map = new HashMap<String, Object>(); map.put("img", R.drawable.jng); map.put("name", "杰尼龟"); map.put("age", "21"); map.put("sex", "男"); map.put("nengli", "五星"); simplelist.add(map); map = new HashMap<String, Object>(); map.put("img", R.drawable.xhl); map.put("name", "小火龙"); map.put("age", "3"); map.put("sex", "男"); map.put("nengli", "五星"); simplelist.add(map); map = new HashMap<String, Object>(); map.put("img", R.drawable.zz); map.put("name", "妙蛙种子"); map.put("age", "2"); map.put("sex", "男"); map.put("nengli", "五星"); simplelist.add(map); return simplelist; } @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Map<String, Object> map = (Map<String, Object>) adapter.getItem(arg2); Toast.makeText(this, map.get("name")+"", Toast.LENGTH_SHORT).show(); } @Override public void onClick(View arg0) { switch (arg0.getId()) { case R.id.but1: break; default: break; } } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" tools:context=".MainActivity" > <ImageView android:id="@+id/img1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:src="@drawable/ic_launcher" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="2" android:orientation="vertical" > <TextView android:id="@+id/te1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> <TextView android:id="@+id/te2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="2" android:orientation="vertical" > <TextView android:id="@+id/te3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> <TextView android:id="@+id/te4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> </LinearLayout> </LinearLayout>
剩下的两种Adapter可以放到下一次讲解中去
发表评论
-
2048源码(核心算法有,缺少几个anctionbar,以后补上)
2014-09-25 13:22 15302048游戏基本上有四部分组成, 1:主activity,包含 ... -
android动画效果
2014-09-24 18:06 1147前几天弄alertdialog和popupwindow的时候, ... -
AlertDialog和PopupWindow
2014-09-18 15:44 1901区别:AlertDialog是非阻塞式对话框:AlertDia ... -
基础篇--resources资源
2014-09-12 15:18 539最近一直在做java开发,偶尔敲点android代码,突然发现 ... -
多点触摸(图片缩放为例)
2014-09-01 17:22 657多点触摸的事件跟单点是大同小异的,上个图片缩放的代码,供大家参 ... -
Toast的多种样式(附带Notification)
2014-09-01 13:48 943Toast以前用的时候一直以为只有文字提示,偶然得知也有多种样 ... -
Android Adapter详解(2)
2014-08-15 14:05 10以前Adapter一直用的不是太好,经过长时间的浸淫,现在可以 ... -
BroadcastReceiver简介
2014-08-14 16:27 675BroadcastReceiver作为四大 ... -
关于Android的Service
2014-08-14 13:57 464说起来真是羞愧,以前手机经常开机的时候,不会有任何QQ消息通知 ... -
在开发过程中易出的错误
2014-08-13 16:53 4191:如果继承ListActivity,那么layout中必须有 ... -
多媒体的浅尝辄止
2014-08-12 15:57 537下面简单讲几种Android的多媒体技术,音频,视频,摄像头, ... -
Sqlite无脑使用
2014-08-11 14:56 889不会sqlite的人再也不用愁了,无脑使用,只要会粘贴复制就O ... -
android弹出框
2014-08-11 11:23 519不得不说,android自带的弹出框真心丑,而且还不好用,接下 ... -
android几种数据存储方式
2014-08-11 10:45 712android数据存储方式 1:SharedPreferen ... -
SQLiteOpenHelper和ContentProvider区别
2014-08-06 15:08 1441Android中操作数据库主要有两种方法:使用SQLiteOp ... -
xml文件解析SAX
2014-08-05 13:45 504xml文件解析:xml文件解析有四种方式, 1.DOM生成和解 ... -
Android不常用代码(1)
2014-07-31 18:07 545目录 1:Webview 2:js交互 1:Web ... -
系统窗口的调用
2014-07-31 15:46 472直接上代码吧,intent进行调用 @Override ... -
fragment简单实用及数据传递(2)
2014-07-31 15:13 2552FragmentTransaction 进行数据传递 imp ... -
ActionBar简介
2014-07-31 10:47 714Action bar是一个标识应用程序和用户位置的窗口功能,并 ...
相关推荐
Android Adapter 详解 Android Adapter 是 Android 开发中一个重要的组件,负责将数据绑定到用户界面中。今天,我们将深入探讨 Android Adapter 的原理和实现方式。 什么是 Android Adapter? Android Adapter 是...
### Android开发Adapter详解 #### 一、Adapter概念与作用 在Android开发中,Adapter是一种用于连接数据源和视图组件的重要桥梁。它主要用于处理数据集合与列表视图之间的交互,确保视图能够正确且高效地展示数据。...
这篇博客“Android Adapter详解(2)”可能会深入探讨Adapter的工作原理、如何使用以及一些常见问题的解决方法。由于没有直接提供博客的具体内容,我将根据常规的Adapter知识进行详细解释。 Adapter是Android中用于将...
适配器(Adapter)在Android开发中是一个非常重要的概念,它主要用于处理数据源和UI组件之间的数据流动和转换。适配器作为数据和UI之间的桥梁,能够把后端数据适配到前端的显示界面,使之能够按照一定的格式显示出来...
Android Adapter里面嵌套ListView实例详解 Android Adapter里面嵌套ListView实例详解是Android开发中的一种常见设计,即在一个ListView中嵌套另一个ListView。这种设计可以实现复杂的列表显示,但是需要特殊处理以...
本篇文章将深入讲解Android的ListView与Adapter的工作原理,并通过实例代码演示如何使用。 首先,ListView的主要职责包括两个方面:一是将数据填充到对应的视图(View)中,二是处理用户的交互事件,如点击事件。...
ArrayAdapter<String> adapter = new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1, strs); setListAdapter(adapter); } } ``` 上述代码展示了如何使用 ArrayAdapter 将一个字符串...
### Android之Adapter用法总结 #### 一、概念与作用 **Adapter** 是 Android 开发中连接后端数据和前端视图的一个关键组件。它作为数据和用户界面(UI)之间的桥梁,在Android开发中扮演着极其重要的角色。尤其是...
1. **文本框(TextView)**:TextView用于展示静态文本,可以在Activity中直接创建或者在布局文件中定义。在布局文件中,可以设置text属性来指定要显示的文本,以及使用其他属性如textSize、textColor等来调整样式。...
**Android ViewPager 使用详解** ViewPager是Android开发中一个非常重要的组件,它允许用户通过左右滑动来切换不同的页面,常用于实现应用的滑动导航或展示多个相似内容的页面。在本篇文章中,我们将深入探讨...
Android 优化技术详解 Android 优化技术是指通过合理的编程和设计来提高 Android 应用程序的性能、内存和用户体验的一系列技术。下面是 Android 优化技术的详细解释: UI 布局优化 Android 的 UI 界面布局的优化...
同时,讲解了LinearLayout、RelativeLayout和ConstraintLayout等布局管理器的用法,以及如何使用Adapter将数据绑定到ListView和GridView等视图组件。此外,还涉及了触摸事件处理和动画效果的实现。 第14章:Android...
【Android View详解第三部分】 在Android开发中,View是一个核心概念,它代表用户界面上的可视化元素。在本部分的讲解中,我们将深入探讨几个重要的View组件:TabHost、ScrollView、ListView、ListActivity、...
- 在Android中,通常我们会创建一个继承自BaseAdapter的自定义Adapter,然后在Adapter的`getView()`方法中根据数据创建或复用View。 - 数据通常存储在一个列表(如ArrayList)中,每个元素代表ListView的一行。...
1. android:dropDownHorizontalOffset:设置列表框的水平偏移距离 2. android:dropDownVerticalOffset:设置列表框的竖直距离 3. android:dropDownSelector:列表框被选中时的背景 4. android:dropDownWidth:设置...
**Android蓝牙API详解** 在Android平台上,蓝牙技术是设备间通信的重要途径,广泛应用于数据传输、设备配对、物联网(IoT)等场景。Android提供了丰富的蓝牙API,使得开发者能够轻松实现蓝牙功能,包括经典蓝牙...
1. 创建Adapter:自定义一个继承自BaseAdapter的类,实现其中的四个关键方法: - getCount():返回数据源的大小,即ListView中列表项的数量。 - getItem(int position):返回指定位置的数据对象。 - getItemId...
1. **UI设计**:Android应用的用户界面是与用户交互的窗口,源代码中包含了各种布局管理器(如LinearLayout、RelativeLayout、GridLayout、ConstraintLayout)的使用示例,以及自定义View和Adapter的实现,这些都是...