Adapter小练习
Aapter的继承关系图:
Android中Adapter的是数据和视图之间的桥梁,数据在adapter中做处理,然后显示到视图上面。
一、ArrayAdapter适配器
java代码:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView; /**
* 列表的显示需要三个元素:
a.ListVeiw 用来展示列表的View。
b.适配器 用来把数据映射到ListView上的中介。
c.数据 具体的将被映射的字符串,图片,或者基本组件。
*/
public class ArrayAdapterActivity extends Activity {
private ListView listview; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_arrayadapter);
listview=(ListView) findViewById(R.id.lv);
String[] str = { "android", "java", ".net", "php", "ios" };
/*
* ArrayAdapter里面有三个参数,第一个参数是上下文,就是当前的Activity,
* 第二个参数是android内置的一个布局,它里面只有一个TextView,
* 这个参数是表明我们数组中每一条数据的布局是这个view,就是将每一条数据都显示在这个view上面;
* 第三个参数就是我们要显示的数据。
*/
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getApplicationContext(), android.R.layout.simple_expandable_list_item_1,str);
listview.setAdapter(adapter);//为listview设置适配器
}
public void listener(View v){
Intent intent=new Intent();
intent.setClass(ArrayAdapterActivity.this, SimpleAdapterActivity.class);
startActivity(intent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }
实现效果如上图:
二、SimpleApater适配器
1,mylist.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
></ListView>
</LinearLayout>
,2,activity_simpleadapter.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" > <ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="3px"/> <LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" > <TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp" /> <TextView
android:id="@+id/info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp" />
</LinearLayout> </LinearLayout>
3,java代码:
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.widget.ListView;
import android.widget.SimpleAdapter; public class SimpleAdapterActivity extends Activity {
private ListView listview; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mylist);
listview = (ListView) findViewById(R.id.listview);
/**
* 参数context:上下文,比如this。关联SimpleAdapter运行的视图上下文
* 参数data:Map列表,列表要显示的数据,这部分需要自己实现
* ,如例子中的getData(),类型要与上面的一致,每条项目要与from中指定条目一致
* 参数resource:ListView单项布局文件的Id
* ,这个布局就是你自定义的布局了,你想显示什么样子的布局都在这个布局中。这个布局中必须包括了to中定义的控件id 参数
* 参数from:一个被添加到Map上关联每一个项目列名称的列表,数组里面是列名称 参数
* 参数to:是一个int数组,数组里面的id是自定义布局中各个控件的id,需要与上面的from对应
*/
SimpleAdapter adapter = new SimpleAdapter(this, getData(),
R.layout.activity_simpleadapter, new String[] { "img",
"textview", "info" }, new int[] { R.id.img,
R.id.textview, R.id.info });
//为listview设置适配器
listview.setAdapter(adapter);
}
/**
*定义一个静态的getData()方法,方便直接调用。
*用Map来盛装数据,再将数据放入list列表中,因为每个list显示的listview的一行。
*/
private static 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("img", R.drawable.apple);
map.put("textview", "苹果");
map.put("info", "apple存在就要改变世界");
list.add(map); map = new HashMap<String, Object>();
map.put("img", R.drawable.s);
map.put("textview", "三星");
map.put("info", "三星电子创造高品质产品和服务!");
list.add(map); map = new HashMap<String, Object>();
map.put("img", R.drawable.m);
map.put("textview", "小米");
map.put("info", "小米专治发烧!");
list.add(map);
return list; }
}
4,效果图:
Adapter小练习的更多相关文章
- 快充 IC BQ25896 如何判斷 手機插著 adapter 充電器時,adapter Iout 大於限制,adapter Vout 小於 限制,導致 battery 不但沒充電且還需放電。
若電池在 放電時,ICHGR 為0. 若電池在 充電時,ICHGR有變化. 下面有寫到 charge current 所以不是 discharge current 狀況: ...
- Android——Adapter
Adapter——本身只是一个接口.Adapter是将数据绑定到UI界面上的桥接类.Adapter负责创建显示每个项目的子View和提供对下层数据的访问. 数据适配器作用:把复杂的数据(数组.链表.数 ...
- 软件工程:黄金G点小游戏1.0
我们要做的是黄金G点小游戏: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值. ...
- 三行代码接入,社交软件打字时底下弹出的表情布局,自定义ViewPager+页面点标+各种功能的android小框架。
(转载请声明出处:http://www.cnblogs.com/linguanh/) 前言: 接上次分享的 ListView 动态加载类,入口:http://www.cnblogs.com/lingu ...
- Nancy之基于Nancy.Owin的小Demo
前面做了基于Nancy.Hosting.Aspnet和Nancy.Hosting.Self的小Demo 今天我们来做个基于Nancy.Owin的小Demo 开始之前我们来说说什么是Owin和Katan ...
- 《你必须知道的.NET》读书笔记一:小OO有大智慧
此篇已收录至<你必须知道的.Net>读书笔记目录贴,点击访问该目录可以获取更多内容. 一.对象 (1)出生:系统首先会在内存中分配一定的存储空间,然后初始化其附加成员,调用构造函数执行初 ...
- 记一次小团队Git实践(下)
在上篇中,我们已经能基本使用git了,接下来继续更深入的挖掘一下git. 更多的配置自定义信息 除了前面讲的用户名和邮箱的配置,还可以自定义其他配置: # 自定义你喜欢的编辑器,可选 git conf ...
- C#开发中可能会用到的一些小贴士(转)
转至http://www.cnblogs.com/Ebony-Ivory/p/4380106.html C#篇: 1.目标平台的选择 64位操作系统在编译VS里的程序时,根据需要设置项目属性的“目标平 ...
- Android中ListView 控件与 Adapter 适配器如何使用?
一个android应用的成功与否,其界面设计至关重要.为了更好的进行android ui设计,我们常常需要借助一些控件和适配器.今天小编在android培训网站上搜罗了一些有关ListView 控件与 ...
随机推荐
- 移动端video视频播放问题
1.视频播放后自动全屏 video添加playsinline webkit-playsinline属性 2.安卓暂停或播放完毕不能滑动 通过js判断机型,安卓去掉controls属性,ios保留co ...
- [转]iMPACT Spartan-6 FPGA - "WARNING:iMPACT:2217-Error shows in the status register, CRC Error bit is Not 0"
AR# 45304 iMPACT Spartan-6 FPGA - "WARNING:iMPACT:2217-Error shows in the status register, CRC ...
- 获取地址栏URL中参数, getQuerySting()方法
今天同事用的以前的获取url地址参数获取不到.以前的方法失效了.后面发现是正则表达式bug: 第一种获取方法(针对普通情况的一般够用): function getQueryString(name) { ...
- light oj 1219 树上贪心
#include <iostream> #include <cstdlib> #include <cstring> #include <queue> # ...
- NSIS nsDialogs 插件
介绍 nsDialogs nsDialogs 允许在安装程序中创建自定义页面.居于内置的页面之上,nsDialogs 能够创建包含任何类型的以任意形式排列的控件的页面.它能够创建简至仅一个控件的页面, ...
- gulp的安装以及less插件安装与使用
1.安装node.js 下载地址:http://nodejs.cn/download/ 这时我们输入 node -v 以及 npm -v 检查是否安装成功. 2.为了提高后续使用的快速,我们安装 ...
- $(...).live is not function
项目中引入了一个插件,但是调用的时候就报了$(...).live is not function 上网搜索了一下live方法在1.9中被删除了,因为平时自己用的时候就用on的方法,没用过live,所以 ...
- JS引擎查找属性的原理
原型继承的原理 不断向上查找 funciton getProperty(obj,prop){ if(obj.hasOwnProperty(prop){ return obj[prop]; }else ...
- 优雅的css写法
一.利用好代码折叠 css也可以进行优雅的代码折叠而且会比html更好看 折叠后的效果: 这样就可以很舒服的把它折叠起来. 二.向Twitter Bootstrap学习 1. 学习的第一点就是用cla ...
- 备忘 ubuntu ip 及 dns 的坑
以前都用 ubuntu 16.04 现在用 18.04 遇到几个恶心的事,现在解决了,记录下来. 1. 设置 DNS , DNS 设置老是不对,最后发现问题老版本 ubuntu 17.10以下 ...