- 浏览: 533629 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tangyunliang:
大哥你太历害了谢谢
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
u013015029:
LZ,请问下,在// 添加消息到聊天窗口 , 这里获取Ed ...
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
endual:
怎么保持会话,我搞不懂啊
Android基于XMPP Smack Openfire开发IM【一】登录openfire服务器 -
donala_zq:
显示:[2013-11-30 11:50:36 - Andro ...
android-----------新浪微博 -
donala_zq:
哥,运行不了啊
android-----------新浪微博
效果图:
[img]
[/img]
主类:
布局文件:
[img]
[/img]
主类:
package com.amaker.listview2; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.BaseAdapter; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import android.widget.AbsListView.OnScrollListener; import android.widget.LinearLayout.LayoutParams; public class ListViewForLoading extends Activity implements OnScrollListener { private listViewAdapter adapter = new listViewAdapter(); ListView listView; LinearLayout loadingLayout; private Thread mThread; /** * 设置布局显示属性 */ private LayoutParams mLayoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); /** * 设置布局显示目标最大化属性 */ private LayoutParams FFlayoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); private ProgressBar progressBar; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub switch (msg.what) { case 1: if (adapter.count <= 41) { adapter.count += 10; int currentPage = adapter.count / 10; Toast.makeText(getApplicationContext(),"第" + currentPage + "页", Toast.LENGTH_LONG).show(); } else { listView.removeFooterView(loadingLayout); } //重新刷新Listview的adapter里面数据 adapter.notifyDataSetChanged(); break; default: break; } } }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } private void init() { // TODO Auto-generated method stub // 线性布局 LinearLayout layout = new LinearLayout(this); // 设置布局 水平方向 layout.setOrientation(LinearLayout.HORIZONTAL); // 进度条 progressBar = new ProgressBar(this); // 进度条显示位置 progressBar.setPadding(0, 0, 15, 0); // 把进度条加入到layout中 layout.addView(progressBar, mLayoutParams); // 文本内容 TextView textView = new TextView(this); textView.setText("加载中..."); textView.setGravity(Gravity.CENTER_VERTICAL); // 把文本加入到layout中 layout.addView(textView, FFlayoutParams); // 设置layout的重力方向,即对齐方式是 layout.setGravity(Gravity.CENTER); // 设置ListView的页脚layout loadingLayout = new LinearLayout(this); loadingLayout.addView(layout, mLayoutParams); loadingLayout.setGravity(Gravity.CENTER); // 得到一个ListView用来显示条目 listView = (ListView) findViewById(R.id.tv); // 添加到脚页显示 listView.addFooterView(loadingLayout); // 给ListView添加适配器 listView.setAdapter(adapter); // 给ListView注册滚动监听 listView.setOnScrollListener(this); } /** * 要用用于生成显示数据 * * @author huangbq * */ class listViewAdapter extends BaseAdapter { int count = 10; public int getCount() { return count; } public Object getItem(int pos) { return pos; } public long getItemId(int pos) { return pos; } public View getView(int pos, View v, ViewGroup p) { TextView view; if (v == null) { view = new TextView(ListViewForLoading.this); } else { view = (TextView) v; } view.setText("ListItem " + pos); view.setTextSize(20f); view.setGravity(Gravity.CENTER); view.setHeight(60); return view; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // TODO Auto-generated method stub if(firstVisibleItem+visibleItemCount==totalItemCount) { //开线程去下载网络数据 if (mThread == null || !mThread.isAlive()) { mThread = new Thread() { @Override public void run() { try { //这里放你网络数据请求的方法,我在这里用线程休眠5秒方法来处理 Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } Message message = new Message(); message.what = 1; handler.sendMessage(message); } }; mThread.start(); } } } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub } }
布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="listview滑动分页加载" /> <ListView android:layout_height="wrap_content" android:id="@+id/tv" android:layout_width="match_parent"/> </LinearLayout>
发表评论
-
Android中如何模拟一次点击(touch)事件
2014-05-06 10:41 0在Android中有时需要模拟某一个View的touch事件, ... -
Android程序Crash时的异常上报
2014-04-28 18:15 0http://blog.csdn.net/singwhatiw ... -
android程序中证书签名校验的方法
2014-04-28 17:58 2006android程序中证书签名校验的方法一 2013-02 ... -
MD5理解错了,哎
2014-03-17 14:14 0MD5只对数据加密是无法解密的,也就是说,你把100加密后,就 ... -
Android 获取网络时间
2014-03-12 11:42 2044Android 获取网络时间 在网上看到的最常见的方式有: ... -
SQLite清空表并将自增列归零
2014-03-05 18:02 1552SQLite清空表并将自增列归零 作者:Zhu Yanfeng ... -
Handler小看一下
2013-11-11 16:42 0android handler调用post方法还是阻塞 su ... -
Frame Animation小看一下
2013-10-12 16:30 783Demo运行效果图: 源码: -
动画小学一下
2013-10-12 16:14 737转自: http://www.eoeandroid.com/f ... -
Android 动画之ScaleAnimation应用详解
2013-10-12 15:49 1010===============eoeAndroid社区推荐:= ... -
android开发中的一个工具类
2013-06-19 16:04 0package com.wanpu.login.dialog; ... -
android TextView怎么设置个别字体颜色并换行?
2013-06-20 09:25 1684(1)、TextView 设置个别字体颜色 TextView ... -
Android开发之文件下载,状态时显示下载进度,点击自动安装
2013-05-07 15:38 1431在进行软件升级时,需要进行文件下载,在这里实现自定义的文件下载 ... -
android中的状态保存
2013-04-07 14:21 979package com.zzl.call; import ... -
android动画基础:tween动画
2013-04-06 11:21 1249工程结构图: [img] [/img] 四个动画的xml ... -
面试中遇到的几个问题
2013-06-09 11:56 1001SAX与DOM之间的区别 SAX ( ... -
Android获取其他包的Context实例,然后调用它的方法,反射!!!
2013-03-25 10:32 1222Android中有Context的概念,想必大家都知道。Con ... -
Android的内存机制和常见泄漏情形
2013-03-06 16:55 795一、 Android的内存机制 Android的程序由Ja ... -
JUnit测试小小demo
2013-03-06 16:37 1164运行效果图: [img] [/img] 项目结构图 ... -
android开发中的异常小工具
2013-03-04 15:53 899package com.zzl.tools; impor ...
相关推荐
以上是对"知识共享-Android之ListView滑动加载、软缓存、懒加载"这一主题的详细解释,希望对你理解Android开发中的这些重要概念有所帮助。在实际开发中,熟练掌握这些技巧能够显著提升应用的性能和用户体验。
"ListView滑动加载"是指实现ListView的无限滚动或者下拉刷新、上拉加载更多功能。这种功能常见于各种社交应用和电商应用,用户可以无缝地浏览列表内容,无需手动翻页。以下是对这个主题的详细讲解: 1. **ListView...
本篇将详细讲解如何实现ListView的滑动自动加载功能,即“无限滚动”。 首先,我们要理解这个功能的基本原理:当用户滚动ListView到接近底部时,程序会自动请求更多的数据并将其添加到列表中。这个特性通常被称为...
这个压缩包"安卓listview相关相关-listview滑动到底部自动加载数据并显示滚动的底部的那个条目点击按钮回到顶部.zip"主要包含了一个实现特定功能的ListView的示例。下面我们将详细探讨这些知识点。 1. **ListView的...
"android listview滑动到底部加载数据"这个主题涉及到一个常见的功能需求:无限滚动或称为“上拉加载更多”。这种设计模式允许用户在滚动到ListView底部时动态加载更多的内容,从而提供更好的用户体验,避免一次性...
通过以上步骤和注意事项,我们可以有效地在ListView中实现动态加载和滑动加载功能,为用户提供流畅的滚动体验。在实际项目中,还可以根据需求进行优化,如使用RecyclerView替代ListView,或者采用更高效的加载策略。
在Android应用开发中,"Fragment+ListView下拉加载上拉刷新"是一个常见的需求,它能够提升用户体验,使得用户可以方便地查看更多的数据而无需手动翻页。本篇将深入探讨如何实现这一功能,主要涉及的技术点是Fragment...
ListView不仅支持滑动滚动,还可以通过集成下拉刷新和上拉加载更多功能,提升用户体验。这篇博客文章将详细介绍如何在Android项目中实现ListView的这两种高级特性。 首先,下拉刷新(Pull-to-Refresh)功能允许用户...
总的来说,“ListView滑动控件(一)(修正版)”涵盖了Android开发中增强ListView交互性的多个方面,包括但不限于侧滑删除、上滑加载更多、性能优化和自定义动画。开发者通过深入理解和应用这些技术,可以为用户...
AsyncTask的使用及ListView的常见优化 asyncTask异步加载数据 使用了LruCache优化图片加载 通过滑动监听提高ListView滑动流畅度.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习...
总之,实现ListView滑动到底部自动加载新内容的功能,需要监听滚动事件、处理数据加载和更新UI,同时考虑用户体验和性能优化。随着Android SDK的发展,开发者可以选择更先进的组件和工具来实现这一功能,如...
滑动分页技术是当用户滚动到底部时,自动加载更多数据的功能,这在处理大量数据时非常实用,可以提高用户体验并节省流量。本篇文章将详细讲解如何实现Android ListView的滑动分页功能。 首先,理解滑动分页的基本...
在标题所描述的场景中,为了实现在ListView滑动时删除条目的功能,我们需要创建一个自定义的ItemTouchHelper.Callback,并重写其相关方法,如onSwiped(),在这个方法中,我们可以调用Adapter的notifyDataSetChanged...
实现`ListView滑动到底部自动加载`的核心思路是监听ListView的滚动事件,并判断是否已经滑动到底部。以下是一个简化版的实现步骤: 1. **设置适配器(Adapter)**:首先,你需要创建一个自定义的Adapter来填充...
接下来,我们要实现ListView滑动到底部或顶部后还能继续拖拽一段距离,松手后自动回弹的效果。这可以通过监听ListView的滑动状态并结合Scroller类来实现。以下是一般步骤: 1. **监听滑动状态**:通过重写ListView...
当用户滚动到ListView的底部时,自动加载更多数据的功能通常被称为“无限滚动”或“下拉加载更多”。这种功能可以提升用户体验,避免用户手动翻页。下面我们将详细讨论如何在Android中实现这个功能。 首先,你需要...
"仿QQ中listview滑动菜单"是一个常见的设计模式,它允许用户通过滑动列表项来展示隐藏的菜单,比如删除或打开按钮。这种功能可以提升应用的互动性和易用性。接下来,我们将深入探讨如何在Android中实现这样的滑动...
综上所述,Android ListView的滑动分页加载和点击分页加载是提升用户体验的重要手段,而convertView的复用机制则是优化性能的关键。理解并熟练掌握这些技术,对于开发高效、流畅的Android应用至关重要。在实际项目中...
- 为了解决ListView滑动时频繁创建和销毁View导致性能问题,开发者常使用ViewHolder模式。ViewHolder保存了列表项中的各个子View引用,减少findViewById的调用,提高性能。 4. **动态加载原理**: - 动态加载通常...