- 浏览: 675366 次
- 性别:
- 来自: 安徽
文章分类
- 全部博客 (252)
- Html/Div+CSS (12)
- Js/Jquery (34)
- Flex (2)
- Ajax (3)
- Java (35)
- C# (15)
- Spring (16)
- Hibernate (13)
- Struts2 (12)
- Struts1 (7)
- DWR (1)
- iBatis/myBatis (9)
- Tag(JSTL、EL) (1)
- Android (44)
- SQL (7)
- SEO (7)
- Exception (3)
- Tool (10)
- Other (3)
- WebService (9)
- Apache (7)
- Ext (0)
- Utils (12)
- thinking in programme (2)
- Hadoop (0)
- ActiveMQ (0)
- HTML5/CSS3 (0)
- WPF (1)
- NodeJs (1)
- 设计模式 (0)
- 程序人生 (1)
- 随笔 (1)
- Linux (1)
- Load Balance (0)
最新评论
-
drinkjava2:
太复杂了而且不通用,利用ThreadLocal可完美解决这一问 ...
JDBC的多条件动态查询 -
u013107014:
multipartRequest.getFiles(" ...
多文件上传 by MultipartFile and Multiple -
liyys:
可惜没讲你mysql数据库的表的设计
iBatis入门 -
Mapple_leave:
效果还是挺不错的,谢谢了。
中文简体与繁体的转换 -
arcpad:
JS禁用浏览器退格键
Android学习08-----Android中的基本控件(下)(1)_滚动视图:ScrollView和列表显示:ListView
- 博客分类:
- Android
从这篇开始,总结一下 Android 中的一些复杂点的常用组件。
滚动视图: ScrollView
滚动视图的使用形式与各个布局管理器的操作形式类似,唯一不同的是,所有的布局管理器之中,可以包含多个组件,而滚动视图里只能有一个组件,所以所谓的视图指的就是提供一个专门的容器,这个容器里面可以装下多于屏幕宽度的组件,而后采用拖拽的方式显示所有 ScrollView 中的组件。
main.xml :
<?xml version="1.0" encoding="utf-8"?> <ScrollView android:id="@+id/myscroll" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:id="@+id/mylinear" android:layout_width="fill_parent" android:layout_height="fill_parent"> </LinearLayout> </ScrollView>
ScrollViewActivity.java:
package com.iflytek.activity; import android.app.Activity; import android.os.Bundle; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; public class ScrollViewActivity extends Activity { private String data[] = { "xdwang", "xdwangiflytek.iteye.com", "王旭东", "Java、C#、Android", "790419465@qq.com", "xdwangiflytek@gmail.com", "13956027313", "工作地点:安徽合肥", "家乡:安徽滁州","格言:打倒小日本","钓鱼岛属于中国" }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LinearLayout layout = (LinearLayout) super.findViewById(R.id.mylinear); // 取得组件 LinearLayout.LayoutParams param = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); // 定义布局参数 for (int x = 0; x < this.data.length; x++) { // 通过循环方式将以上的信息通过Button组件进行封装 Button but = new Button(this); but.setText(this.data[x]); // 设置显示文字 layout.addView(but, param); // 增加组件 } } }
列表显示: ListView
1 、基本功能实现 Demo
package com.iflytkek.activity; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; public class ListView01Activity extends Activity { private String data[] = { "xdwang", "xdwangiflytek.iteye.com", "王旭东", "Java、C#、Android", "790419465@qq.com", "xdwangiflytek@gmail.com", "13956027313", "工作地点:安徽合肥", "家乡:安徽滁州","格言:打倒小日本","钓鱼岛属于中国" }; private ListView listView = null; // 定义ListView组件 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.listView = new ListView(this); // 实例化组件 //simple_list_item_1,显示分风格 this.listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, this.data)); // 为ListView组件设置内容 super.setContentView(this.listView) ; // 显示组件 } }
2、SimpleAdapter
SimpleAdapter类主要功能是将List集合的数据转换为ListView可以支持的数据,而要想实现这种转换,首先需要定义一个数据的显示模版(专门定义一个布局管理器,基本上都是表格布局),在这个模版中可以定义ListView每行需要显示的所有组件,而在需要转换的List集合里保存的是多条Map集合的数据,这些Map集合里面保存着一些具体的要显示的信息,即:模版中每一个组件的ID实际上就相当于规定了里面保存的Map集合的key,而模版中每个组件的显示内容,则有Map保存的Value决定。这种操作也是ListView中操作最多的一种。
Layout/mian.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="25px" android:gravity="center_horizontal" android:text="王旭东信息列表" /> <ListView android:id="@+id/datalist" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout>
Layout/data_list.xml
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TableRow> <ImageView android:id="@+id/icon" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/file_icon"/> <TextView android:id="@+id/_id" android:textSize="15px" android:gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <!-- 这边的id使用下划线的主要目的是为了以后在使用数据存储的时候SQLite数据库规定好必须使用一个下划线的id表示主键 --> <TextView android:id="@+id/name" android:textSize="15px" android:gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </TableRow> </TableLayout>
SimpleAdapterActivity.java:
package com.iflytek.activity; 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 String data[][] = { { "001", "xdwang" }, { "002", "xdwangiflytek.iteye.com" }, { "003", "王旭东" }, { "004", "Java、C#、Android" }, { "005", "790419465@qq.com" }, { "006", "xdwangiflytek@gmail.com" }, { "007", "13956027313" }, { "008", "工作地点:安徽合肥" }, { "009", "家乡:安徽滁州" }, { "0010", "格言:打倒小日本" }, { "0011", "钓鱼岛属于中国" } }; private ListView datalist = null; // 定义ListView组件 private List<Map<String, String>> listMaps = new ArrayList<Map<String, String>>(); // 定义显示的内容包装 private SimpleAdapter simpleAdapter = null; // 进行数据的转换操作 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.datalist = (ListView) super.findViewById(R.id.datalist); // 取得组件 for (int x = 0; x < this.data.length; x++) { Map<String, String> map = new HashMap<String, String>(); // 定义Map集合,保存每一行数据 map.put("_id", this.data[x][0]); // 与data_list.xml中的TextView组加匹配 map.put("name", this.data[x][1]); // 与data_list.xml中的TextView组加匹配 this.listMaps.add(map); // 保存了所有的数据行 } this.simpleAdapter = new SimpleAdapter(this, this.listMaps, R.layout.data_list, new String[] { "_id", "name" } // Map中的key的名称 , new int[] { R.id._id, R.id.name }); // 是data_list.xml中定义的组件的资源ID this.datalist.setAdapter(this.simpleAdapter); } }
3、使用ListActivity
main.xml和data_list.xml和上面的不变
ListView04Activity.java:
package com.iflytek.activity; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.ListActivity; import android.os.Bundle; import android.widget.SimpleAdapter; public class ListView04Activity extends ListActivity {// 继承了ListActivity类 private String data[][] = { { "001", "xdwang" }, { "002", "xdwangiflytek.iteye.com" }, { "003", "王旭东" }, { "004", "Java、C#、Android" }, { "005", "790419465@qq.com" }, { "006", "xdwangiflytek@gmail.com" }, { "007", "13956027313" }, { "008", "工作地点:安徽合肥" }, { "009", "家乡:安徽滁州" }, { "0010", "格言:打倒小日本" }, { "0011", "钓鱼岛属于中国" } }; private List<Map<String, String>> list = new ArrayList<Map<String, String>>(); // 定义显示的内容包装 private SimpleAdapter simpleAdapter = null; // 进行数据的转换操作 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); for (int x = 0; x < this.data.length; x++) { Map<String, String> map = new HashMap<String, String>(); // 定义Map集合,保存每一行数据 map.put("_id", this.data[x][0]); // 与data_list.xml中的TextView组加匹配 map.put("name", this.data[x][1]); // 与data_list.xml中的TextView组加匹配 this.list.add(map); // 保存了所有的数据行 } this.simpleAdapter = new SimpleAdapter(this, this.list, R.layout.data_list, new String[] { "_id", "name" } // Map中的key的名称 , new int[] { R.id._id, R.id.name }); // 是data_list.xml中定义的组件的资源ID super.setListAdapter(this.simpleAdapter); // 设置列表显示 } }
此时没有使用到main.xml文件,而只是利用了data_list.xml文件进行显示,虽然说可以完成列表的功能,但是这种显示风格并不特别实用,没有之前定义ListView组件,而后利用Activity程序设置内容显示方便。
4、事件处理
main.xml和data_list.xml和上面的不变
ListView05Activity.java
package com.iflytek.activity; 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.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; public class ListView05Activity extends Activity { private String data[][] = { { "001", "xdwang" }, { "002", "xdwangiflytek.iteye.com" }, { "003", "王旭东" }, { "004", "Java、C#、Android" }, { "005", "790419465@qq.com" }, { "006", "xdwangiflytek@gmail.com" }, { "007", "13956027313" }, { "008", "工作地点:安徽合肥" }, { "009", "家乡:安徽滁州" }, { "0010", "格言:打倒小日本" }, { "0011", "钓鱼岛属于中国" } }; private ListView datalist = null; // 定义ListView组件 private List<Map<String, String>> list = new ArrayList<Map<String, String>>(); // 定义显示的内容包装 private SimpleAdapter simpleAdapter = null; // 进行数据的转换操作 private TextView info = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.datalist = (ListView) super.findViewById(R.id.datalist); // 取得组件 this.info = (TextView) super.findViewById(R.id.info); // 取得组件 for (int x = 0; x < this.data.length; x++) { Map<String, String> map = new HashMap<String, String>(); // 定义Map集合,保存每一行数据 map.put("_id", this.data[x][0]); // 与data_list.xml中的TextView组加匹配 map.put("name", this.data[x][1]); // 与data_list.xml中的TextView组加匹配 this.list.add(map); // 保存了所有的数据行 } this.simpleAdapter = new SimpleAdapter(this, this.list, R.layout.data_list, new String[] { "_id", "name" } // Map中的key的名称 , new int[] { R.id._id, R.id.name }); // 是data_list.xml中定义的组件的资源ID this.datalist.setAdapter(this.simpleAdapter); this.datalist.setOnItemClickListener(new OnItemClickListenerImpl()); // 单击选项 } private class OnItemClickListenerImpl implements OnItemClickListener { @SuppressWarnings("unchecked") @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Map<String, String> map = (Map<String, String>) ListView05Activity.this.simpleAdapter .getItem(position); String _id = map.get("_id"); String name = map.get("name"); ListView05Activity.this.info.setText("选中的数据项ID是:" + _id + ",名称是:" + name); } } }
5、复杂显示
Main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="25px" android:gravity="center_horizontal" android:text="学习视频列表" /> <ListView android:id="@+id/datalist" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout>
data_list.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/pic" android:layout_height="wrap_content" android:layout_width="wrap_content" android:padding="3px"/> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="150px" android:layout_height="wrap_content" android:gravity="left"> <TextView android:id="@+id/title" android:textSize="16px" android:padding="3px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/author" android:padding="3px" android:textSize="10px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="200px" android:layout_height="wrap_content" android:gravity="left"> <TextView android:id="@+id/type" android:padding="3px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:id="@+id/score" android:padding="3px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout>
ListView03Activity.java:
package com.iflytek.activity; 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 ListView03Activity extends Activity { private int pic[] = new int[] { R.drawable.pic_oracle, R.drawable.pic_javase, R.drawable.pic_javaweb, R.drawable.pic_javaee, R.drawable.pic_android, R.drawable.pic_game }; private String data[][] = new String[][] { { "Oracle", "科大" }, { "Java SE", "小李" }, { "Java WEB", "花花" }, { "Java EE", "小王" }, { "Android", "乐乐" }, { "Java 游戏", "小三" } }; private ListView datalist = null; // 定义ListView组件 private List<Map<String, String>> list = new ArrayList<Map<String, String>>(); // 定义显示的内容包装 private SimpleAdapter simpleAdapter = null; // 进行数据的转换操作 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.datalist = (ListView) super.findViewById(R.id.datalist); // 取得组件 for (int x = 0; x < this.data.length; x++) { Map<String, String> map = new HashMap<String, String>(); // 定义Map集合,保存每一行数据 map.put("pic", String.valueOf(this.pic[x])); // 与data_list.xml中的TextView组加匹配 map.put("title", this.data[x][0]); // 与data_list.xml中的TextView组加匹配 map.put("author", this.data[x][1]); // 与data_list.xml中的TextView组加匹配 map.put("type", "免费"); map.put("score", String.valueOf(R.drawable.start_05)); this.list.add(map); // 保存了所有的数据行 } this.simpleAdapter = new SimpleAdapter(this, this.list, R.layout.data_list, new String[] { "pic", "title", "author", "type", "score" } // Map中的key的名称 , new int[] { R.id.pic, R.id.title, R.id.author, R.id.type, R.id.score }); // 是data_list.xml中定义的组件的资源ID this.datalist.setAdapter(this.simpleAdapter); } }
发表评论
-
This version of ADT requires android SDK
2013-07-25 16:45 1599Windows系统下用Eclipse开发工具开发An ... -
Android学习13-----网络通信(4) WebView组件
2012-11-27 09:18 2520WebView 是一个开发的浏览 ... -
Android学习13-----网络通信(3) 与Web Service进行通讯
2012-11-26 09:40 1897这里我们的WebService使用xFire开发。 ... -
Android学习13-----网络通信(2) 与Socket交换数据
2012-11-23 09:11 3310对于网络开发而言,最常用的交互模式:WebService、We ... -
Android学习13-----网络通信(1) 与WEB服务器交换数据
2012-11-22 09:11 2196与Web服务器交互: 如果手机要想与 web ... -
Android学习11-----多媒体技术(5) 媒体录制
2012-11-16 08:10 1896在Android中通过android.media ... -
Android学习11-----多媒体技术(4) 使用摄像头拍照,多点触控
2012-11-15 08:37 2892一、摄像头拍照 前面说媒体播放 时了解了 ... -
Android学习11-----多媒体技术(3) 媒体播放
2012-11-14 08:25 1417在 Androi ... -
Android学习11-----多媒体技术(2) Animation
2012-11-13 08:47 1998一、渐变动画, Tweened Animation ... -
Android学习11-----多媒体技术(1) 绘制简单图形,Bitmap,Matrix
2012-11-12 08:48 1627一、绘制简单图 ... -
Android学习12-----手机服务(4) 传感器
2012-11-19 09:13 2023传感器一般用于游戏中,在 Android 系统中为 ... -
Android学习12-----手机服务(1) 取得电池电量和声音服务:AudioManager
2012-11-18 11:18 3508一、取得电池电量信息 ... -
Android学习10-----Android组件通信 (8) 桌面显示组件:AppWidget
2012-11-02 08:36 2040一、 AppWidget 在使用 Androi ... -
Android学习10-----Android组件通信 (7) 广播机制:Broadcast
2012-11-01 08:43 1519一、 广播: 广播也是一种信息的发送机制,在 ... -
Android学习10-----Android组件通信 (6) PendingIntent
2012-10-31 08:20 2266Intent 的主要功能是表示用 ... -
Android学习10-----Android组件通信 (5) Service
2012-10-30 08:25 1740Service 基本组成: ... -
Android学习10-----Android组件通信 (4) 消息机制
2012-10-29 08:22 1555在 Android 操作系统中存在着消息队列的操作 ... -
Android学习10-----Android组件通信 (3) ActivityGroup
2012-10-26 08:23 2322导航栏在 Android 中的应用是很常见的,前面 ... -
Android学习10-----Android组件通信 (2) Activity生命周期
2012-10-25 08:16 1287Activity 是整个 Android 平台的基 ... -
Android学习10-----Android组件通信 (1) Intent
2012-10-24 08:43 2015在一个项目之中,会由多个 Activity ...
相关推荐
在Android开发中,ScrollView是一个非常重要的布局控件,它允许用户在内容超出屏幕显示范围时进行滚动查看。本文将深入探讨ScrollView的使用、特点、常见问题及其解决方案。 首先,ScrollView是一个可滚动的容器,...
在Android应用开发中,ListView是常用的视图组件,用于展示大量数据列表,而圆角ListView则是对默认样式的一种美化,可以提升用户界面的视觉效果。本文将深入探讨如何实现一个带有圆角的ListView,并解决其与...
2. **嵌套滚动**:需要注意的是,如果ScrollView的子视图中包含了已具有滚动功能的控件(如HorizontalScrollView,ListView,GridView,WebView等),可能会导致滚动冲突。在这种情况下,需要正确配置嵌套滚动行为,...
在Android开发中,ScrollView和ListView是两种常用的布局控件,分别用于实现单向滚动和多行列表滚动。然而,当这两个控件同时出现在一个布局中时,常常会出现滚动条冲突的问题,导致用户体验下降。本篇文章将详细...
在Android开发中,ListView和ScrollView是两种常用的布局控件,分别用于展示大量可滚动的数据列表和容纳多个视图。然而,当ListView被嵌套在ScrollView内时,它们之间的滑动冲突是一个常见的问题。本篇文章将深入...
在Android应用开发中,下拉刷新控件是一个非常常见的功能,尤其在列表或者滚动视图中,用户可以通过下拉操作来获取最新的数据。本资源是一个关于Android应用源码的示例,专注于实现下拉刷新功能,特别适用于毕业设计...
在Android开发中,ListView与...总之,处理ListView与ScrollView的冲突以及ListView中CheckBox的使用,需要深入理解Android的列表视图机制和适配器模式。合理的设计和编程实践能够帮助我们构建高效且用户友好的界面。
在Android应用开发中,下拉刷新控件是一个非常常见的组件,尤其在列表或者滚动视图中,用户可以通过下拉操作来获取最新的数据。本教程主要围绕如何在ListView和ScrollView中实现下拉刷新功能进行讲解。 1. **下拉...
在Android开发中,ScrollView和ListView是两种常用的布局组件。ScrollView是一个可以包含单个直接子视图的滚动容器,而ListView则是一个可以展示多个相同类型的条目并且支持滚动的控件。当在一个ScrollView中嵌套一...
在Android开发中,ScrollView和ListView是两种常用的布局控件,分别用于实现滚动视图和可滚动列表。然而,直接在ScrollView内嵌套ListView时,可能会出现一些问题,比如滚动冲突,导致用户体验不佳。本篇文章将深入...
在Android开发中,ListView是一个非常常用的组件,它用于展示大量数据列表,具有高效的滚动性能和自动回收机制。然而,当ListView需要与ScrollView嵌套使用时,可能会遇到一些问题,特别是不能正常刷新。本文将深入...
在Android开发中,ListView是一种常用的控件,用于展示大量数据并支持滚动。然而,当它被嵌套在ScrollView中时,通常会出现一些问题,比如滚动冲突或者ListView无法完整显示。这是因为ScrollView本身就是一个可滚动...
在Android开发中,有时我们需要在一个布局中展示大量的内容,这时我们可能会使用到ScrollView。ScrollView是一个可以垂直滚动的容器,它可以包含一个直接子视图,并确保该子视图完全可见。然而,当我们在ScrollView...
在Android开发中,ScrollView和ListView都是非常常见的控件。ScrollView是一个可滚动的视图容器,它可以包含一个或多个视图,并允许用户上下滑动查看内容。而ListView则是一个用于展示长列表的视图,通常用于显示...
在Android开发中,ListView和ScrollView是两种常用的布局控件。ListView用于展示大量可滚动的数据,而ScrollView则可以包裹任意数量的子视图并提供垂直滚动功能。然而,当ListView被放置在ScrollView内时,两者之间...
在Android应用开发中,下拉刷新功能已经成为许多应用的标准特性,尤其在列表视图(ListView)和滚动视图(ScrollView)中更为常见。这个压缩包文件"Android下拉刷新控件(ListView好ScrollView版)_Android.rar"显然是...
在Android开发中,ListView和ScrollView是两种常用的布局控件,分别用于展示可滚动的列表视图和可滚动的内容视图。本主题将深入探讨如何在ListView或ScrollView中动态改变Headerview的透明度以及实现显示或隐藏的...
在Android开发中,下拉刷新功能是用户界面中不可或缺的一部分,尤其在列表视图(ListView)和滚动视图(ScrollView)中更为常见。这个压缩包文件"Android下拉刷新控件(ListView好ScrollView版).7z"显然是包含了实现这...
在Android开发中,ScrollView是一种常用的布局控件,用于允许用户滚动查看超过屏幕大小的内容。本文将深入探讨如何实现“弹性拉伸”的ScrollView、在ScrollView中嵌套ListView以及添加ScrollView的滑动监听。这些...
这个“Android下拉刷新控件(ListView好ScrollView版)”压缩包文件包含的是关于如何在Android中实现这种功能的具体资料,主要集中在ListView和ScrollView这两种常见的滚动视图上。 1. **下拉刷新概念** 下拉刷新...