首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
cookie
controller
scala
fetch
nodejs
cPlusPlus
email
bit
hash
client
php7
heatmap
stream
lua
node.js
php
frameworks
select
default
iostream
case
post
grid
install
byte
main
timestamp
web3
php5
settings
netty
python2
int
js
bytecode
include
subset
process
expression
c语言
python
char
dagger
import
tree
cmd
callback
less
python3
web
instance
cpython
bitmap
dockerfile
future
golang
request
jsp
input
window
list
filter
config
数组
express
spring
typescript
jar
shell
require
random
export
uml
regex
heap
rsa
eval
version
text
当前位置:
开发笔记
>
编程语言
> 正文
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
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
layout
ABAP开发者需关注的几大关键问题
长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ...
[详细]
蜡笔小新 2024-11-21 18:21:06
post
优化 DOM 以提升 JavaScript 性能
本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ...
[详细]
蜡笔小新 2024-11-21 18:16:19
post
Spring AOP学习笔记Advice执行顺序
一、Advice执行顺序二、Advice在同一个Aspect中三、Advice在不同的Aspect中一、Advice执行顺序如果多个Advice和同一个JointPoint连接& ...
[详细]
蜡笔小新 2024-11-21 15:28:36
main
将图像平移到画布中心python_python – Tkinter画布缩放移动/平移
高级缩放示例.就像谷歌地图一样.它仅缩放图块,但不缩放整个图像.因此,缩放的瓷砖占据了恒定的记忆,并且不会为大型缩放图像调整大小的图像.对于简化的缩放示例lookhere.在Win ...
[详细]
蜡笔小新 2024-11-20 15:47:04
byte
如何高效解决Android应用ANR问题?
本文介绍了ANR(应用程序无响应)的基本概念、常见原因及其解决方案,并提供了实用的工具和技巧帮助开发者快速定位和解决ANR问题,提高应用的用户体验。 ...
[详细]
蜡笔小新 2024-11-19 19:31:48
grid
UE4 中的距离场技术详解
本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ...
[详细]
蜡笔小新 2024-11-19 18:21:03
grid
C# ListView用法详解 很完整
一、ListView类1、常用的基本属性:(1)FullRowSelect:设置是否行选择模式。(默认为false)提示 ...
[详细]
蜡笔小新 2023-10-09 18:49:28
select
关于改变ListView选中项的状态方法
关于改变ListView选中项的状态方法思路:无论使用哪一个适配器,只需要重写他的getView()方法即可原理:getView方法是用于把创建好的view交给listView用的,所以我们可 ...
[详细]
蜡笔小新 2023-09-24 07:47:11
select
具有顺序标题的ListView
具有顺序标题的ListView ...
[详细]
蜡笔小新 2023-09-18 13:10:50
main
【Android开发】 ListView使用实战详解,你get到了嘛?
【Android开发】ListView使用实战详解,你get到了嘛?-目录一、什么是ListView?二、ListView的简单用法三、ListView点击响应事件hel ...
[详细]
蜡笔小新 2023-09-13 13:08:01
main
使用TabActivity实现Android顶部选项卡功能
本文介绍如何通过继承TabActivity来创建Android应用中的顶部选项卡。通过简单的步骤,您可以轻松地添加多个选项卡,并实现基本的界面切换功能。 ...
[详细]
蜡笔小新 2024-11-21 17:47:42
main
如何使用 org.apache.tinkerpop.gremlin.structure.VertexProperty 的 key 方法
本文详细介绍了 `org.apache.tinkerpop.gremlin.structure.VertexProperty` 类中的 `key()` 方法,并提供了多个实际应用的代码示例。通过这些示例,读者可以更好地理解该方法在图数据库操作中的具体用途。 ...
[详细]
蜡笔小新 2024-11-21 17:38:10
main
spring boot使用jetty无法启动
spring boot使用jetty无法启动 ...
[详细]
蜡笔小新 2024-11-21 10:15:52
settings
Elasticsearch 分页查询策略详解
本文详细介绍了Elasticsearch中的分页查询机制,包括基本的分页查询流程、'from-size'浅分页与'scroll'深分页的区别及应用场景,以及两者在性能上的对比。 ...
[详细]
蜡笔小新 2024-11-20 10:33:23
default
HTML前端开发:UINavigationController与页面间数据传递详解
本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ...
[详细]
蜡笔小新 2024-11-20 09:46:39
手机用户2602929123
这个家伙很懒,什么也没留下!
Tags | 热门标签
cookie
controller
scala
fetch
nodejs
cPlusPlus
email
bit
hash
client
php7
heatmap
stream
lua
node.js
php
frameworks
select
default
iostream
case
post
grid
install
byte
main
timestamp
web3
php5
settings
RankList | 热门文章
1
零基础java开发工程师视频教程全套,基础+进阶+项目实战(152G)
2
中专计算机三级,考前数天如何突破性通过计算机等级考试之三级网络技术篇
3
05、Windows Store app 的图片裁切
4
SpringMVC使用Jackson、双向关联的解决策略@JsonIgnore
5
Linux监控命令之==>top
6
html5定位元素位置,HTML5——CSS学习笔记(7)定位与锚点
7
HTCondor运行Java文件
8
drawable如何只让两个叫圆角_轴的结构设计时,如何确保轴上零件的轴向定位?...
9
《发阆中》翻译 原文赏析诗人唐杜甫
10
用polt3画曲面_creo/proe曲面造型——八种弹簧制作教程
11
php7垃圾回收机制详解
12
SwiftUI——将数组(Array)作为函数参数
13
word表格如何另起一页(word如何另起一页)
14
SpringBoot(一):整合SpringMVC和初识配置文件(入门)
15
机器学习笔记(Washington University) Classification Specializationweek five
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有