首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
scala
shell
cpython
instance
select
tags
nodejs
stream
httprequest
const
case
tree
go
emoji
perl
substring
process
vba
golang
copy
bit
heatmap
window
typescript
php5
sum
byte
settings
text
config
iostream
email
triggers
chat
integer
python3
runtime
md5
post
js
char
cookie
vbscript
cSharp
blob
bytecode
erlang
testing
flutter
ip
keyword
数组
datetime
buffer
netty
php8
match
loops
expression
controller
get
int
filter
range
future
yaml
hashset
main
callback
node.js
timezone
object
plugins
bash
heap
export
hashtable
import
dll
当前位置:
开发笔记
>
编程语言
> 正文
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
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
sum
Java 序列化接口详解
本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ...
[详细]
蜡笔小新 2024-12-27 15:06:12
text
深入解析ExpandableComposite.addExpansionListener()方法及其应用
本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ...
[详细]
蜡笔小新 2024-12-27 16:11:49
byte
Apache Jena 中 Txn.executeWrite 方法详解与代码示例
本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ...
[详细]
蜡笔小新 2024-12-26 17:55:52
copy
Java多线程并发控制:解决相同key的线程互斥问题
本文探讨了在Java多线程环境下,如何确保具有相同key值的线程能够互斥执行并按顺序输出结果。通过优化代码结构和使用线程安全的数据结构,我们解决了线程同步问题,并实现了预期的并发行为。 ...
[详细]
蜡笔小新 2024-12-25 14:15:29
byte
深入解析Java枚举及其高级特性
本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ...
[详细]
蜡笔小新 2024-12-22 14:46:52
byte
深入理解org.neo4j.helpers.collection.Iterators.single()方法及其应用
本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ...
[详细]
蜡笔小新 2024-12-28 10:51:55
text
优化ListView性能
本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ...
[详细]
蜡笔小新 2024-12-28 10:36:30
go
Handling Null Object Encoding in OAuth 1.0a API Implementation
Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ...
[详细]
蜡笔小新 2024-12-28 08:54:34
text
java编写的简易计算器
主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ...
[详细]
蜡笔小新 2024-12-27 18:18:10
config
Dockerfile 编写与 Docker 网络配置详解
本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ...
[详细]
蜡笔小新 2024-12-27 17:31:41
text
如何通过按钮聚焦ListView的TextCell? - How to focus ListView's TextCell by button?
IneedtofocusTextCellsonebyoneviaabuttonclick.ItriedlistView.ScrollTo.我需要通过点击按钮逐个关注Tex ...
[详细]
蜡笔小新 2024-12-27 17:02:23
config
Linux 自动化安装脚本详解
本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ...
[详细]
蜡笔小新 2024-12-27 16:33:32
text
Akka BackoffSupervisor的深入解析与实践
本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ...
[详细]
蜡笔小新 2024-12-27 15:04:09
config
从 .NET 转 Java 的自学之路:IO 流基础篇
本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ...
[详细]
蜡笔小新 2024-12-26 17:37:25
text
深入理解JavaScript的作用域链与闭包
本文详细探讨了JavaScript中的作用域链和闭包机制,解释了它们的工作原理及其在实际编程中的应用。通过具体的代码示例,帮助读者更好地理解和掌握这些概念。 ...
[详细]
蜡笔小新 2024-12-23 01:27:41
手机用户2602929123
这个家伙很懒,什么也没留下!
Tags | 热门标签
scala
shell
cpython
instance
select
tags
nodejs
stream
httprequest
const
case
tree
go
emoji
perl
substring
process
vba
golang
copy
bit
heatmap
window
typescript
php5
sum
byte
settings
text
config
RankList | 热门文章
1
opengauss创建函数
2
SqlServer级联删除两种实现方法:触发器,外键
3
千万不要错过的后端[纯干货]面试知识点整理 I I
4
多线程简介及创建
5
python视频转字符动画_谁有用python写出来的badapple字符动画
6
mysql和php的关系理解(php技术和mysql怎么结合)
7
集合之list、set及数据结构简述
8
vue + vueawesomeswiper 实现整屏滚动切换(分页切换)
9
C++ win32 Listbox的使用
10
C# 重新排列数组
11
C++图形界面开发Qt教程:嵌套圆环示例
12
sql三大范式
13
OpenCV计时函数getTickFrequency与cvGetTickFrequency之间的区别
14
python开源人工智能项目_6个最受欢迎的人工智能学习项目!开源!
15
Mysql错误处理: /usr/bin/mysqld_safe: line xxx: xxxx Killed ... (mysql自动停止 Plugin FEDERATED is disabled
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有