Android:ListViewAdapter
MainActivity:
package com.wyl.listview; 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.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter; public class MainActivity extends Activity {
ListView listview;
ListAdapter adapter;
ListAdapter la;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init(); }
private void init() {
listview = (ListView) findViewById(R.id.listview01);
//// adapter.a
// //数据源,
// //1.新建适配器
// //
// String[] a = {"the first","the second","第三个","张雅岚"};
//// List<String> b = new ArrayList<String>();
//// b.add("张雅岚");
//// b.add("wyl");
// adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, a);
// listview.setAdapter(adapter); //
// String[] c = {"one","two","three","four"};
// adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1 , c);
// System.out.println("=============");
// listview.setAdapter(adapter);
// la = new SimpleAdapter(this, getData(), resource, from, to) //
// public SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
//
// Added in API level 1
// Constructor
//
// Parameters
// context The context where the View associated with this SimpleAdapter is running
// data A List of Maps. Each entry in the List corresponds to one row in the list.
// The Maps contain the data for each row, and should include all the entries specified in "from"
// resource Resource identifier of a view layout that defines the views for this list item. The layout
// file should include at least those named views defined in "to"
// from A list of column names that will be added to the Map associated with each item.
// to The views that should display column in the "from" parameter. These should all be TextViews.
// The first N views in this list are given the values of the first N columns in the from parameter. la = new SimpleAdapter(this,getData(),R.layout.item,new String[]{"pic","text"},new int[]{R.id.pic,R.id.text}); listview.setAdapter(la); }
private List<Map<String, Object>> getData() { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map map = new HashMap<String,Object>();
for(int i=0;i<10;i++){
map.put("pic", R.drawable.ic_launcher);
map.put("text", "wyl"+i);
System.out.println("i:"+i);
list.add(map); } return list; } }
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/pic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:src="@drawable/ic_launcher"
/>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textSize="20sp"
android:textColor="#000000"
android:text="demo"
/>
</LinearLayout>
PS:SimpleAdapter的构造方法的参数解释:
new SimpleAdapter(context,data,resource,from,to)
context: 上下文
data: 数据源(List<? extends Map<String,?>>data) 一个Map所组成的List集合
每一个Map都会去对应ListView列表中的一行
每一个Map(键 - 值对)中的键必须包含所有在from中所指定的值
resource: 列表项的布局文件ID
from: Map中的键名
to: 绑定数据视图中的ID,与from成对应关系
-----------------------------------
context:一般指当前的activity,用this即可;
data:一个数据源,本课程的重点,创建Map并添加信息;
resource:一个布局文件ID,表示listview中每一个item的布局方式;
from:Map的键名,listview中的item内部元素对应的名字;
to:resource布局文件中,每个元素的ID。
这里说说我自己对这这五个参数的理解。
我们可以发现,第三个参数和第五个参数都跟所要显示出来的具体有关,如左侧显示图片,右侧显示备注。可能我们会想,为什么
已经有了第五个参数,即那个图片和备注的R.id.xx属性的数组,那为什么还要再加上第三个参数resouce呢?有了更具体的的R.id.xx属性
那么我们就能够知道这个数组所表示的属性所在的layout布局了,也就完全没必要再给出第二个参数了。其实问题就出在这里,因为第五个
参数是一个int 类型的数组,在安卓系统根不知道这些数字到底是对应着文字或者图片。如果没有第三个参数,那么android就不知道本例
中第三个参数数组中的下标为0的对应的是图片,那么系统只能够根据第二个参数绑定的值,即
map.put("pic", R.drawable.ic_launcher);
这行代码中的R.drawable.ic_launcher,这个值实际上是一个16进制数,在gen.具体包名.R.java中的
public static final class drawable {
public static final int ic_launcher=0x7f020000;
public static final int yl=0x7f020001;
}
这行代码中的0x7f020000这个16进制数,对应的10进制为:2130837504,那么运行这个安卓应用时显示的不是图片,而这个10进制
数:2130837504。
由此:我们要特别注意:第3,4,5个参数一一对应。如果不对应起来可能发生意想不到的结果。
有个具体的例子的图如下:
Android:ListViewAdapter的更多相关文章
- Android 多个listview的实现
正好,今天项目中需要,先写了个demo,给大家参考参考. 先上图,需要的自己,看看具体的代码实现步骤 大概说一下实现步骤: 1.布局中先用 scrollview 包裹 LinearLayout < ...
- Android中ListView动态加载数据
1. 引言: 为了提高ListView的效率和应用程序的性能,在Android应用程序中不应该一次性加载ListView所要显示的全部信息,而是采取分批加载策略,随着用户的滑动,动态的从后台加载所需的 ...
- Android中ListView错位布局实现(无聊向)
由于某些原因,需要个错位的页面,在网上找不到好的例子,试着动手写了写. 不考虑配色的完成图如下: 首先考虑的是,listview每一行左右都有可能缩进. 先假设一行的布局就是ImageView,Tex ...
- android代码优化----ListView中自定义adapter的封装(ListView的模板写法)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 【转】Android之自定义Adapter的ListView
http://www.cnblogs.com/topcoderliu/archive/2011/05/07/2039862.html 在开发中,我们经常使用到ListView这个控件.Android的 ...
- android之下拉刷新(reflush)
package com.example.reflush; import android.app.ListActivity; import android.os.Bundle; import andro ...
- Android代码优化----PullToRefresh+universal-image-loader实现从网络获取数据并刷新
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Android ListView 自定义 Adapter
自定义Adapter类 public class ListViewAdapter extends BaseAdapter { private static final String TAG = Mai ...
- Android批量图片加载经典系列——采用二级缓存、异步加载网络图片
一.问题描述 Android应用中经常涉及从网络中加载大量图片,为提升加载速度和效率,减少网络流量都会采用二级缓存和异步加载机制,所谓二级缓存就是通过先从内存中获取.再从文件中获取,最后才会访问网络. ...
随机推荐
- 八皇后问题-回溯法(MATLAB)
原创文章,转载请注明:八皇后问题-回溯法(MATLAB) By Lucio.Yang 1.问题描述 八皇后问题是十九世纪著名数学家高斯于1850年提出的.问题是:在8*8的棋盘上摆放8个皇后,使其不能 ...
- jbpmAPI-7
7.1. Introduction 业务流程的一个重要方面是人工任务管理.虽然一些执行的工作过程中可以自动执行一些任务需要执行的人类演员.jBPM支持特殊的人工任务节点内部流程建模与人类用户交互.这个 ...
- jmeter 通过ant集成到jenkins
jmeter可以通过ant自动执行测试脚本,然后集成到jenkins上,并发送测试报告 1.下载安装ant 2.将jmeter安装包extras文件夹里ant-jemter-1.1.1.jar 复制到 ...
- HTML+CSS笔记 CSS进阶续集
元素分类 在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的块状元素有: <div>.<p>.<h1&g ...
- 【转】context和getApplicationContext()介绍
在android中常常会遇到与context有关的内容,大多都是作为参数在传递,但是它的作用究竟是什么呢 先说它的用法,举个例子 在语句 AlertDialog.Builder builder = n ...
- MySQL FEDERATED 存储引擎
MySQL中针对不同的功能需求提供了不同的存储引擎.所谓的存储引擎也就是MySQL下特定接口的具体实现. FEDERATED是其中一个专门针对远程数据库的实现.一般情况下在本地数据库中建表会在数据库目 ...
- 读书笔记: 深入浅出node.js
>> 深入浅出node.js node.js是c++编写的js运行环境 浏览器: 渲染引擎 + js引擎 后端的js运行环境 node.js用google v8引擎,同时提供很多系统级的A ...
- document.compatMode简介
对于document.compatMode,很多朋友可能很少接触,知道他的存在却不清楚他的用途.今天在ext中看到 document.compatMode的使用,感觉这个对于我们开发兼容性的web页面 ...
- COB封装的优势
随着固态照明技术的不断进步,COB(chip-on-board)封装技术得到越来越多的重视,由于COB光源有热阻低,光通量密度高,眩光少,发光均匀等特性,在室内外照明灯具中得到了广泛的应用,如筒灯,球 ...
- IAR Embedded Workbench for ARM 6.50.6 & 6.60.1 破解补丁
IAR EWARM 6.50.6 & 6.60.1 破解 破解原理和方法见:http://blog.csdn.net/chivalrys/article/details/8564568 IAR ...