首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
byte
merge
object
list
bash
scala
python2
triggers
join
version
runtime
controller
timestamp
request
audio
typescript
emoji
nodejs
数组
netty
string
default
process
spring
header
filter
foreach
int
instance
python3
command
node.js
hashtable
range
search
include
schema
httpclient
php5
python
iostream
select
blob
lua
tree
require
char
php8
datetime
go
random
perl
buffer
cSharp
split
web
utf-8
cmd
bytecode
golang
io
cookie
yaml
less
web3
ascii
fetch
dll
javascript
c语言
regex
function
config
export
settings
jsp
usb
flutter
main
当前位置:
开发笔记
>
编程语言
> 正文
ListView分段加载数据
作者:手机用户2602929123 | 来源:互联网 | 2023-09-05 14:55
[java]viewplaincopyprint?ListViewlistViewgetListView();
[java]
view plain copy print ?
ListView listView = getListView();
//添加到脚页显示 这个要继承ListActivity 实现OnScrollListener
listView.addFooterView(loadingLayout);
这位兄弟的Demo非常不错.
[java]
view plain copy print ?
public
class
ListViewUpdate
extends
Activity
implements
OnScrollListener,
OnItemClickListener {
private
List
applicationItemInfoList;
private
List
applicationItemInfoListTemp;
private
ApplicationItemAdapter applicationItemAdapter;
private
ListView listView;
private
LinearLayout loading;
private
Handler handler;
private
boolean
refreshable;
/** Called when the activity is first created. */
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
init();
updateApplicationItemInfoList();
}
private
void
init() {
setContentView(R.layout.main);
listView = (ListView) findViewById(R.id.list);
loading = (LinearLayout) findViewById(R.id.loading);
applicationItemInfoList =
new
ArrayList
();
applicationItemAdapter =
new
ApplicationItemAdapter(
this
,
applicationItemInfoList);
handler = createHandler();
refreshable =
true
;
listView.setAdapter(applicationItemAdapter);
listView.setOnItemClickListener(
this
);
listView.setOnScrollListener(
this
);
}
private
Handler createHandler() {
Handler handler =
new
Handler() {
@Override
public
void
handleMessage(Message msg) {
// TODO Auto-generated method stub
super
.handleMessage(msg);
switch
(msg.what) {
case
1
:
if
(applicationItemInfoListTemp !=
null
) {
ListViewUpdate.
this
.applicationItemInfoList
.addAll(applicationItemInfoListTemp);
ListViewUpdate.
this
.applicationItemAdapter
.notifyDataSetChanged();
ListViewUpdate.
this
.loading
.setVisibility(View.GONE);
ListViewUpdate.
this
.refreshable =
true
;
}
else
{
ListViewUpdate.
this
.loading
.setVisibility(View.GONE);
Toast.makeText(ListViewUpdate.
this
,
"All of applications have been shown!"
,
Toast.LENGTH_LONG).show();
}
break
;
default
:
break
;
}
}
};
return
handler;
}
public
Handler getHandler() {
return
handler;
}
private
void
updateApplicationItemInfoList() {
new
Thread(
new
Runnable() {
@Override
public
void
run() {
// TODO Auto-generated method stub
if
(ListViewUpdate.
this
.applicationItemInfoList.size() <
80
) {
ListViewUpdate.
this
.applicationItemInfoListTemp = ListViewUpdate.
this
.getLocalApplicationInfo();
}
else
{
ListViewUpdate.
this
.applicationItemInfoListTemp =
null
;
}
try
{
Thread.sleep(
5000
);
}
catch
(InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Message message =
new
Message();
message.what =
1
;
ListViewUpdate.
this
.getHandler().sendMessage(message);
}
}).start();
}
private
ArrayList
getLocalApplicationInfo() {
PackageManager packageManager =
this
.getPackageManager();
ArrayList
applicationItemInfoList =
new
ArrayList
();
List
packageInfoList = packageManager
.getInstalledPackages(
0
);
for
(
int
i = packageInfoList.size(); i >
0
; i--) {
ApplicationInfo applicationInfo = packageInfoList.get(i -
1
).applicationInfo;
if
((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) <=
0
) {
try
{
ApplicationItemInfo applicationItemInfo =
new
ApplicationItemInfo();
String packageName = packageInfoList.get(i -
1
).packageName;
String[] permissions = packageManager.getPackageInfo(
packageName, PackageManager.GET_PERMISSIONS).requestedPermissions;
applicationItemInfo.setPackageName(packageName);
applicationItemInfo.setPermissions(permissions);
applicationItemInfo.setIcon(packageManager
.getApplicationIcon(applicationInfo));
applicationItemInfo.setName(packageManager
.getApplicationLabel(applicationInfo).toString());
applicationItemInfoList.add(applicationItemInfo);
}
catch
(NameNotFoundException e) {
// TODO Auto-generated catch block
}
}
}
if
((!applicationItemInfoList.isEmpty())
&& (applicationItemInfoList.size() <
10
)) {
for
(
int
i = applicationItemInfoList.size(); i <
10
; i++) {
applicationItemInfoList.add(applicationItemInfoList.get(
9
- i));
}
}
return
applicationItemInfoList;
}
@Override
public
void
onScroll(AbsListView view,
int
firstVisibleItem,
int
visibleItemCount,
int
totalItemCount) {
// TODO Auto-generated method stub
if
((firstVisibleItem + visibleItemCount == totalItemCount)
&& (totalItemCount !=
0
)) {
if
(refreshable) {
refreshable =
false
;
loading.setVisibility(View.VISIBLE);
updateApplicationItemInfoList();
}
}
}
@Override
public
void
onScrollStateChanged(AbsListView view,
int
scrollState) {
// TODO Auto-generated method stub
}
@Override
public
void
onItemClick(AdapterView> arg0, View view,
int
position,
long
id) {
// TODO Auto-generated method stub
AlertDialog.Builder permissionDialog =
new
AlertDialog.Builder(
this
);
permissionDialog.setIcon(applicationItemInfoList.get(position)
.getIcon());
permissionDialog.setTitle(applicationItemInfoList.get(position)
.getName());
String[] permissions = applicationItemInfoList.get(position)
.getPermissions();
StringBuffer temp =
new
StringBuffer();
if
(permissions !=
null
) {
for
(
int
i =
0
; i < permissions.length; i++) {
temp.append(permissions[i]);
temp.append(
"\n"
);
}
}
else
{
temp.append(
"permission is null"
);
}
permissionDialog.setMessage(temp.toString());
permissionDialog.setPositiveButton(
"OK"
,
new
DialogInterface.OnClickListener() {
@Override
public
void
onClick(DialogInterface dialog,
int
which) {
// TODO Auto-generated method stub
dialog.cancel();
}
});
permissionDialog.create().show();
}
}
list
listview
view
java
copy
int
get
scroll
io
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
int
Python 的 10 个开发技巧!太实用了
1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ...
[详细]
蜡笔小新 2024-12-27 18:36:54
int
java编写的简易计算器
主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ...
[详细]
蜡笔小新 2024-12-27 18:18:10
int
Java 实现系统托盘最小化:SWT与JDK6的解决方案
本文探讨了在Java中实现系统托盘最小化的两种方法:使用SWT库和JDK6自带的功能。通过这两种方式,开发者可以创建跨平台的应用程序,使窗口能够最小化到系统托盘,并提供丰富的交互功能。 ...
[详细]
蜡笔小新 2024-12-25 15:03:50
instance
Java多线程并发控制:解决相同key的线程互斥问题
本文探讨了在Java多线程环境下,如何确保具有相同key值的线程能够互斥执行并按顺序输出结果。通过优化代码结构和使用线程安全的数据结构,我们解决了线程同步问题,并实现了预期的并发行为。 ...
[详细]
蜡笔小新 2024-12-25 14:15:29
int
Web前端开发中的HTML与CSS命名规范
作为一名专业的Web前端工程师,掌握HTML和CSS的命名规范是至关重要的。良好的命名习惯不仅有助于提高代码的可读性和维护性,还能促进团队协作。本文将详细介绍Web前端开发中常用的HTML和CSS命名规范,并提供实用的建议。 ...
[详细]
蜡笔小新 2024-12-25 11:06:17
int
在Android中排列多行小部件 - Arranging Rows of Widgets in Android
本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ...
[详细]
蜡笔小新 2024-12-25 10:33:17
int
优化ListView性能
本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ...
[详细]
蜡笔小新 2024-12-28 10:36:30
int
编写有趣的VBScript恶作剧脚本
本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ...
[详细]
蜡笔小新 2024-12-28 09:46:23
int
Dockerfile 编写与 Docker 网络配置详解
本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ...
[详细]
蜡笔小新 2024-12-27 17:31:41
string
Android LED 数字字体的应用与实现
本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ...
[详细]
蜡笔小新 2024-12-27 10:34:22
int
RecyclerView初步学习(一)
RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ...
[详细]
蜡笔小新 2024-12-26 20:24:01
int
Objective-C 编程中的关键语法点
本文探讨了 Objective-C 中的一些重要语法特性,包括 goto 语句、块(block)的使用、访问修饰符以及属性管理等。通过实例代码和详细解释,帮助开发者更好地理解和应用这些特性。 ...
[详细]
蜡笔小新 2024-12-26 19:42:38
int
Apache Jena 中 Txn.executeWrite 方法详解与代码示例
本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ...
[详细]
蜡笔小新 2024-12-26 17:55:52
int
深入解析 SimpleDraweeView 的 setScaleType 方法及其实现
本文详细介绍了 com.facebook.drawee.view.SimpleDraweeView 中的 setScaleType 方法,提供了多个实际代码示例,并解释了其在不同场景下的应用。 ...
[详细]
蜡笔小新 2024-12-26 12:15:47
int
CUGB图论专题:排水系统中的最大流问题 - EK与Dinic算法解析
本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ...
[详细]
蜡笔小新 2024-12-25 17:47:23
手机用户2602929123
这个家伙很懒,什么也没留下!
Tags | 热门标签
byte
merge
object
list
bash
scala
python2
triggers
join
version
runtime
controller
timestamp
request
audio
typescript
emoji
nodejs
数组
netty
string
default
process
spring
header
filter
foreach
int
instance
python3
RankList | 热门文章
1
win2003服务器/虚拟主机不支持Flv和ANI格式文件的解决方案
2
为应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制
3
重启IIS提示"不支持此接口"这个错误,无法正常重启的解决方法
4
在服务器中用IIS建立FTP服务器的图文方法
5
从外网访问内网本机的网站实现方法分享
6
Linux SSH 安全策略 更改 SSH 端口
7
服务器安全设置之-本地安全策略设置
8
win2003服务器安全设置之 IP安全策略
9
配置IIS应用程序池的详细介绍(iis6)
10
IIS7.5下301重定向的设置方法(及伪静态后301重定向出错案例)
11
cwRsync 4.0.5 文件同步配置步骤分享
12
Windows 2003 IIS 不支持ASP问题的解决方法
13
debian安装后sudo命令不能用的解决方法
14
linux系统之间通过nfs网络文件系统挂载设置方法
15
Linux目录结构分解及意义和建议
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有