android-ListView控件的使用
一、深刻理解ListView
1、职责:将数据填充到布局、响应用户操作
2、ListView的实现需要:布局、数据源、适配器
3、常见适配器:
ArrayAdapter<T> 用来绑定一个数组,支持泛型
SimpleAdapter 用来绑定在xml中定义的控件对应的数据
SimpleCursorAdapter 用来绑定游标得到的数据
BaseAdapter 通用的基础适配器
二、数据适配器作用:
将复杂的数据填充在指定界面上(数组、集合、链表、数据库...),即连接数据源和视图界面的桥梁。
(1)数组适配器:ArrayAdapter
用于绑定格式单一的数据(数据源:数组、集合);
(2)简单适配器:SimpleAadpter
用于绑定格式复杂的数据(数据源:只能是特定泛型的集合);
实现过程:新建适配器、添加数据源到适配器、绑定适配器;
MainActivity文件:
package com.example.mylistview;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class MainActivity extends ActionBarActivity {
private ListView listView;
//private ArrayAdapter<String> arr_adapter;
private SimpleAdapter simp_adapter;
private List<Map<String,Object>> dataList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
listView=(ListView) findViewById(R.id.listView);
/*
* 数组适配器:
* 0、生成一个数据源
* 1、新建一个适配器并加载数据源
* 数组适配器三个参数:
* 上下文、当前ListView加载的列表项所对应的布局文件、数据源
* 2、绑定适配器
*
* */
//String []arr_data={"马轩","选吗","马车","活吗","龙马","天马","赵称","赵晨","真唱","注册","向日葵","徐荣凯","谢荣康"};
//arr_adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr_data);
//listView.setAdapter(arr_adapter);
/*
* 简单适配器:
* 参数:上下文
*
* 数据源List<? extends Map<String,?>> 一个map所组成的list集合,
* 每一个map对应listView列表中的一行
* 每一个Map中的键必须包含所有在from中所指定的键
*
* 列表项的布局文件
*
* 记录map中的键名
*
* 绑定数据视图中的id,与from对应
* */
dataList=new ArrayList<Map<String,Object>>();
simp_adapter=new SimpleAdapter(this, this.getData(), R.layout.activity_menusimp, new String[]{"pic","text"}, new int[]{R.id.pic,R.id.text});
listView.setAdapter(simp_adapter);
}
private List<Map<String,Object>> getData(){
for (int i = 0; i < 20; i++) {
Map<String,Object> map=new HashMap<String, Object>();
map.put("pic", R.drawable.ic_logo);
map.put("text", "谢荣康");
dataList.add(map);
}
return dataList;
}
}
activity_menu.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>
activity_menusimp.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="86dp"
android:layout_height="100dp"
android:layout_marginLeft="15dp"
android:src="@drawable/ic_logo" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="demo"
android:textColor="#000000"
android:textSize="20sp" />
</LinearLayout>
三、熟练运用两种监听器:OnScrollListener、OnItemClickListener
监听器:程序和用户/系统交互的桥梁
实现过程:视图直接设置监听器,在相关的实现方法中补充需要的代码即可。
1、OnScrollListener --- 监视滚动的变化,用于视图在滚动中加载数据
实现的方法:
onScrollStateChanged(AbsListView view, int scrollState){}
onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
第三个参数:
SCROLL_STATE_FLING:离开时由于用力划了一下还在滚动
SCROLL_STATE_IDLE:视图已经停止滑动
SCROLL_STATE_TOUCH_SCROLL:正在滑动,手指木有离开屏幕
//notifyDataSetChanged()---动态更新视图中所包含的数据
2、OnItemClickListener --- 处理视图中单个条目的点击事件
实现的方法:
onItemClick(AdapterView<?> parent, View view, int position, long id){
// 获取列表项位置,列表项从0开始
listView.getItemAtPosition(position);
}
android-ListView控件的使用的更多相关文章
- Xamarin Android ListView 控件使用
在项目中通常用到了ListView控件,示例如下: create the listitem class ,eg; public class ColorItem { public string Colo ...
- 如何清空android ListView控件的内容
第一种方法: listView.setAdapter(null); 第二种方法: listAdapter.clear(); listAdapter.notifyDataSetChanged() ; 满 ...
- Android中ListView控件的使用
Android中ListView控件的使用 ListView展示数据的原理 在Android中,其实ListView就相当于web中的jsp,Adapter是适配器,它就相当于web中的Servlet ...
- Android中ListView 控件与 Adapter 适配器如何使用?
一个android应用的成功与否,其界面设计至关重要.为了更好的进行android ui设计,我们常常需要借助一些控件和适配器.今天小编在android培训网站上搜罗了一些有关ListView 控件与 ...
- android中ListView控件&&onItemClick事件中获取listView传递的数据
http://blog.csdn.net/aben_2005/article/details/6592205 本文转载自:android中ListView控件&&onItemClick ...
- Android:控件ListView列表项与适配器结合使用
Listview是用来展示一些重复性的数据用的,比如一些列表集合数据展示到手机,需要适配器作为载体获取数据,最后将数据填充到布局. ListView里面的每个子项Item可以使一个字符串,也可以是一个 ...
- android中ListView控件
今天学习了ListView控件和页面跳转,下面大致介绍下: 第一步:创建显示内容的文件vlist.xml: <?xml version="1.0" encoding=&quo ...
- 【Android基础】listview控件的使用(4)-----自定义布局的listview的使用
前面我介绍了listview控件的不同用法,但是这些用法在实际的开发项目中是不足以满足需求的,因为前面的几种用法只能简单的显示文本信息,而且布局都比较单一,很难做出复杂的结果,在实际的开发项目中,90 ...
- 【Android基础】listview控件的使用(3)------Map与SimpleAdapter组成的多显示条目的Listview
前面介绍的两种listview的使用都是最基础的,所以有很大的局限性,比如只能在一个item(即每一行的条目)中显示一个文本信息,这一篇我将介绍Map与SimpleAdapter组成的多显示条目的Li ...
- 【Android基础】listview控件的使用(2)-------继承自ListActivity的普通listview
由于listview在android控件中的重要性,所以android为我们直接封装了一个类ListviewActivity,直接将listview封装在了activity之中,在本篇中,我将介绍在L ...
随机推荐
- JQuery Event属性说明
JQuery事件中的Event属性是经常性的被忽略的.大多数时间你的确不怎么用它,但有些时候它还是有作用的. 如获知触发时用户的环境(是否按了shift etc).每个浏览器对event都有不同的地方 ...
- wpf window set window的owner
[DllImport("user32.dll")] public static extern IntPtr GetAncestor(IntPtr hWnd, int f ...
- View(三)
大家在平时使用View的时候都会发现它是有状态的,比如说有一个按钮,普通状态下是一种效果,但是当手指按下的时候就会变成另外一种效果,这样才会给人产生一种点击了按钮的感觉.当然了,这种效果相信几乎所有的 ...
- Linux---从start_kernel到init进程启动
“平安的祝福 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” ini ...
- rsync+inotify实现实时同步案例--转
转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐 ...
- SecureCRT上传和下载文件(下载默认目录)
SecureCR 下的文件传输协议有ASCII .Xmodem .Ymodem .Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. Xmodem:这种古老的传输协议速度较慢,但由于使 ...
- JavaScript 入门 (1)
一. javascript的调用 JavaScript代码可以直接嵌在网页的任何地方,不过通常我们都把JavaScript代码放到<head>中: <html> <hea ...
- Linux查看系统配置常用命令
Linux查看系统配置常用命令: 系统 # uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo ...
- ArcGIS 点到直线的距离
/****点到直线的距离*** * 过点(x1,y1)和点(x2,y2)的直线方程为:KX -Y + (x2y1 - x1y2)/(x2-x1) = 0 * 设直线斜率为K = (y2-y1)/(x2 ...
- VMware 锐捷 NAT模式的服务自动关闭的解决办法
之前一直搞不定VMware和锐捷的问题,校园网,你懂的. 后来发现,使用NAT模式联网时,锐捷会间隔性地终结windows系统的那个关于NAT联网的服务,你可以在计算机管理 - 服务,找到一个写有NA ...