首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
spring
uri
include
cookie
emoji
jsp
integer
web
blob
match
go
tree
search
heap
lua
triggers
replace
stream
grid
javascript
int
bitmap
case
hashset
window
command
object
cpython
node.js
hash
typescript
dll
actionscrip
expression
rsa
python
string
default
ascii
instance
nodejs
httprequest
regex
php7
python3
substring
import
function
request
hashcode
input
hashtable
数组
callback
list
tags
io
less
foreach
js
metadata
client
cmd
loops
char
php
java
shell
c语言
datetime
utf-8
range
cPlusPlus
export
sum
timestamp
flutter
subset
process
当前位置:
开发笔记
>
编程语言
> 正文
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
HDFS API
Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ...
[详细]
蜡笔小新 2024-11-13 17:31:50
hash
Java 编程错误:对象无法转换为 long 类型
本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ...
[详细]
蜡笔小新 2024-11-13 10:57:24
int
深入解析Java多线程同步机制与应用
本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ...
[详细]
蜡笔小新 2024-11-08 16:11:26
int
关于改变ListView选中项的状态方法
关于改变ListView选中项的状态方法思路:无论使用哪一个适配器,只需要重写他的getView()方法即可原理:getView方法是用于把创建好的view交给listView用的,所以我们可 ...
[详细]
蜡笔小新 2023-09-24 07:47:11
case
com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例
com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ...
[详细]
蜡笔小新 2024-11-13 10:47:33
int
面试中如何回答“零拷贝”技术问题?
零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ...
[详细]
蜡笔小新 2024-11-13 02:03:52
int
Android 自定义加载对话框 CustomProgressDialog
本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ...
[详细]
蜡笔小新 2024-11-12 21:51:00
int
实验九:使用SharedPreferences存储简单数据
本实验旨在帮助学生理解和掌握使用SharedPreferences存储和读取简单数据的方法,包括程序参数和用户选项。 ...
[详细]
蜡笔小新 2024-11-12 14:21:47
object
PHP 对象生命周期与内存管理
本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ...
[详细]
蜡笔小新 2024-11-12 13:35:26
object
第二十五天接口、多态
1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ...
[详细]
蜡笔小新 2024-11-12 06:43:20
object
在 QQmlPropertyMap 的派生类中无法调用槽函数或 Q_INVOKABLE 方法?
在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ...
[详细]
蜡笔小新 2024-11-11 15:34:22
object
利用 Delphi 中的 IdTCPServer 和 IdTCPClient 实现高效文件传输
本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ...
[详细]
蜡笔小新 2024-11-08 16:34:23
int
AIX编程挑战赛:AIX正方形问题的算法解析与Java代码实现
在昨晚的阅读中,我注意到了CSDN博主西部阿呆-小草屋发表的一篇文章《AIX程序设计大赛——AIX正方形问题》。该文详细阐述了AIX正方形问题的背景,并提供了一种基于Java语言的解决方案。本文将深入解析这一算法的核心思想,并展示具体的Java代码实现,旨在为参赛者和编程爱好者提供有价值的参考。 ...
[详细]
蜡笔小新 2024-11-06 16:47:06
object
JavaScript XML操作实用工具类:XmlUtilsJS技巧与应用
JavaScript XML操作实用工具类:XmlUtilsJS技巧与应用 ...
[详细]
蜡笔小新 2024-11-06 15:15:26
object
Android ListView中子控件的状态保存以及点击子控件改变子控件状态
这两天用到了ListView,写下遇到的一些问题。首先是ListView本身与子控件的焦点问题,比如我这里子控件用到了Button,在需要ListView中的根布局属性上加上下面的这一个属性:and ...
[详细]
蜡笔小新 2023-10-16 18:59:44
手机用户2602929123
这个家伙很懒,什么也没留下!
Tags | 热门标签
spring
uri
include
cookie
emoji
jsp
integer
web
blob
match
go
tree
search
heap
lua
triggers
replace
stream
grid
javascript
int
bitmap
case
hashset
window
command
object
cpython
node.js
hash
RankList | 热门文章
1
PS2022打开总提示访问钥匙串密钥的解决办法
2
通用爬虫和聚焦爬虫
3
第二次网页前端培训笔记(表单,INPUT及常用字符)
4
c语言 完全平方数,菜鸟求助,要怎么求完全平方数?
5
中碳宝,个人参与碳排放交易的好途径
6
mysql e 乱码_大佬们E语言连接MYSQL输出中文乱码怎么破
7
LaTeX 多层列举 条目 编号
8
ubantu系统下安装pytorch
9
remove命令和show命令的使用(场景conda删除channel )
10
让wordpress点击日志标题跳转到外部链接实现
11
开发笔记:Hadoop Mapreduce
12
【算法】 快速排序
13
准确率98%!三星全球首秀MRAM磁阻内存内计算
14
网页直播源码,JQuery实现轮播图方法
15
大数据学习入门难,给初学者支招
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有