热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ListView分段加载数据

[java]viewplaincopyprint?ListViewlistViewgetListView();

[java]  view plain copy print ?
  1. ListView listView = getListView();  
  2. //添加到脚页显示  这个要继承ListActivity 实现OnScrollListener  
  3. listView.addFooterView(loadingLayout);  

 

 

这位兄弟的Demo非常不错.

[java]  view plain copy print ?
    1. public class ListViewUpdate extends Activity implements OnScrollListener,  
    2.         OnItemClickListener {  
    3.   
    4.     private List applicationItemInfoList;  
    5.   
    6.     private List applicationItemInfoListTemp;  
    7.   
    8.     private ApplicationItemAdapter applicationItemAdapter;  
    9.   
    10.     private ListView listView;  
    11.   
    12.     private LinearLayout loading;  
    13.   
    14.     private Handler handler;  
    15.   
    16.     private boolean refreshable;  
    17.   
    18.     /** Called when the activity is first created. */  
    19.     @Override  
    20.     public void onCreate(Bundle savedInstanceState) {  
    21.         super.onCreate(savedInstanceState);  
    22.         init();  
    23.         updateApplicationItemInfoList();  
    24.     }  
    25.   
    26.     private void init() {  
    27.         setContentView(R.layout.main);  
    28.         listView = (ListView) findViewById(R.id.list);  
    29.         loading = (LinearLayout) findViewById(R.id.loading);  
    30.   
    31.         applicationItemInfoList = new ArrayList();  
    32.         applicationItemAdapter = new ApplicationItemAdapter(this,  
    33.                 applicationItemInfoList);  
    34.         handler = createHandler();  
    35.         refreshable = true;  
    36.   
    37.         listView.setAdapter(applicationItemAdapter);  
    38.         listView.setOnItemClickListener(this);  
    39.         listView.setOnScrollListener(this);  
    40.     }  
    41.   
    42.     private Handler createHandler() {  
    43.         Handler handler = new Handler() {  
    44.   
    45.             @Override  
    46.             public void handleMessage(Message msg) {  
    47.                 // TODO Auto-generated method stub  
    48.                 super.handleMessage(msg);  
    49.                 switch (msg.what) {  
    50.                 case 1:  
    51.                     if (applicationItemInfoListTemp != null) {  
    52.                         ListViewUpdate.this.applicationItemInfoList  
    53.                                 .addAll(applicationItemInfoListTemp);  
    54.                         ListViewUpdate.this.applicationItemAdapter  
    55.                                 .notifyDataSetChanged();  
    56.                         ListViewUpdate.this.loading  
    57.                                 .setVisibility(View.GONE);  
    58.                         ListViewUpdate.this.refreshable = true;  
    59.                     } else {  
    60.                         ListViewUpdate.this.loading  
    61.                                 .setVisibility(View.GONE);  
    62.                         Toast.makeText(ListViewUpdate.this,  
    63.                                 "All of applications have been shown!",  
    64.                                 Toast.LENGTH_LONG).show();  
    65.                     }  
    66.                     break;  
    67.                 default:  
    68.                     break;  
    69.                 }  
    70.             }  
    71.         };  
    72.         return handler;  
    73.     }  
    74.   
    75.     public Handler getHandler() {  
    76.         return handler;  
    77.     }  
    78.   
    79.     private void updateApplicationItemInfoList() {  
    80.         new Thread(new Runnable() {  
    81.   
    82.             @Override  
    83.             public void run() {  
    84.                 // TODO Auto-generated method stub  
    85.   
    86.                 if (ListViewUpdate.this.applicationItemInfoList.size() < 80) {  
    87.                     ListViewUpdate.this.applicationItemInfoListTemp = ListViewUpdate.this  
    88.                             .getLocalApplicationInfo();  
    89.                 } else {  
    90.                     ListViewUpdate.this.applicationItemInfoListTemp = null;  
    91.                 }  
    92.   
    93.                 try {  
    94.                     Thread.sleep(5000);  
    95.                 } catch (InterruptedException e) {  
    96.                     // TODO Auto-generated catch block  
    97.                     e.printStackTrace();  
    98.                 }  
    99.   
    100.                 Message message = new Message();  
    101.                 message.what = 1;  
    102.                 ListViewUpdate.this.getHandler().sendMessage(message);  
    103.             }  
    104.   
    105.         }).start();  
    106.     }  
    107.   
    108.     private ArrayList getLocalApplicationInfo() {  
    109.   
    110.         PackageManager packageManager = this.getPackageManager();  
    111.         ArrayList applicationItemInfoList = new ArrayList();  
    112.         List packageInfoList = packageManager  
    113.                 .getInstalledPackages(0);  
    114.   
    115.         for (int i = packageInfoList.size(); i > 0; i--) {  
    116.   
    117.             ApplicationInfo applicationInfo = packageInfoList.get(i - 1).applicationInfo;  
    118.   
    119.             if ((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {  
    120.                 try {  
    121.                     ApplicationItemInfo applicationItemInfo = new ApplicationItemInfo();  
    122.   
    123.                     String packageName = packageInfoList.get(i - 1).packageName;  
    124.                     String[] permissions = packageManager.getPackageInfo(  
    125.                             packageName, PackageManager.GET_PERMISSIONS).requestedPermissions;  
    126.   
    127.                     applicationItemInfo.setPackageName(packageName);  
    128.                     applicationItemInfo.setPermissions(permissions);  
    129.   
    130.                     applicationItemInfo.setIcon(packageManager  
    131.                             .getApplicationIcon(applicationInfo));  
    132.                     applicationItemInfo.setName(packageManager  
    133.                             .getApplicationLabel(applicationInfo).toString());  
    134.   
    135.                     applicationItemInfoList.add(applicationItemInfo);  
    136.   
    137.                 } catch (NameNotFoundException e) {  
    138.                     // TODO Auto-generated catch block  
    139.                 }  
    140.             }  
    141.         }  
    142.         if ((!applicationItemInfoList.isEmpty())  
    143.                 && (applicationItemInfoList.size() < 10)) {  
    144.             for (int i = applicationItemInfoList.size(); i < 10; i++) {  
    145.                 applicationItemInfoList.add(applicationItemInfoList.get(9 - i));  
    146.             }  
    147.         }  
    148.         return applicationItemInfoList;  
    149.     }  
    150.   
    151.     @Override  
    152.     public void onScroll(AbsListView view, int firstVisibleItem,  
    153.             int visibleItemCount, int totalItemCount) {  
    154.         // TODO Auto-generated method stub  
    155.         if ((firstVisibleItem + visibleItemCount == totalItemCount)  
    156.                 && (totalItemCount != 0)) {  
    157.             if (refreshable) {  
    158.                 refreshable = false;  
    159.                 loading.setVisibility(View.VISIBLE);  
    160.                 updateApplicationItemInfoList();  
    161.             }  
    162.         }  
    163.     }  
    164.   
    165.     @Override  
    166.     public void onScrollStateChanged(AbsListView view, int scrollState) {  
    167.         // TODO Auto-generated method stub  
    168.   
    169.     }  
    170.   
    171.     @Override  
    172.     public void onItemClick(AdapterView arg0, View view, int position,  
    173.             long id) {  
    174.         // TODO Auto-generated method stub  
    175.         AlertDialog.Builder permissionDialog = new AlertDialog.Builder(this);  
    176.         permissionDialog.setIcon(applicationItemInfoList.get(position)  
    177.                 .getIcon());  
    178.         permissionDialog.setTitle(applicationItemInfoList.get(position)  
    179.                 .getName());  
    180.         String[] permissions = applicationItemInfoList.get(position)  
    181.                 .getPermissions();  
    182.   
    183.         StringBuffer temp = new StringBuffer();  
    184.         if (permissions != null) {  
    185.             for (int i = 0; i < permissions.length; i++) {  
    186.                 temp.append(permissions[i]);  
    187.                 temp.append("\n");  
    188.             }  
    189.         } else {  
    190.             temp.append("permission is null");  
    191.         }  
    192.         permissionDialog.setMessage(temp.toString());  
    193.         permissionDialog.setPositiveButton("OK",  
    194.                 new DialogInterface.OnClickListener() {  
    195.   
    196.                     @Override  
    197.                     public void onClick(DialogInterface dialog, int which) {  
    198.                         // TODO Auto-generated method stub  
    199.                         dialog.cancel();  
    200.                     }  
    201.                 });  
    202.         permissionDialog.create().show();  
    203.     }  
    204. }  

推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 标题: ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
author-avatar
手机用户2602929123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有