- 浏览: 254599 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (195)
- android开发 (29)
- JAVA (3)
- android—Task (1)
- android—Folders (1)
- android—gallery (1)
- android—ListView (15)
- android—GridView (4)
- android—Notification (3)
- android—File (5)
- android—tabhost (3)
- android—uri (4)
- android—Shortcut (1)
- android—Imei (1)
- android—Vibrator (3)
- android—Voice (1)
- android 小案例练习 (2)
- android—Wifi (1)
- android—login (1)
- android—onKeyDown (1)
- android—Activity (12)
- android—onTouchEvent (2)
- android—thread (2)
- android—app (3)
- android—webview (2)
- android—Activity自动跳转 (2)
- android_sensor (1)
- android_URL (2)
- android—Googlemap (1)
- android TextView小练习 (1)
- android-apk (1)
- android -sqlite (2)
- Java -xml (1)
- rest (1)
- android-phone (2)
- android—image (7)
- android_intent (3)
- android——broadcastReceiver (2)
- Map (1)
- lock (0)
- android-background (2)
- android-cache (2)
- android-expandtab (2)
- android_UI控件实现 (0)
- android_viewfinderview (1)
- android-Popup (1)
- Android—TextView (0)
- Android-network (1)
- android_share (1)
- Android_pulldownview (0)
- android-Switch (1)
- android_actionbar (1)
- Android_scrollview (1)
- android_util (9)
- android-sparseArray (1)
- android_Adapter (1)
- Android—DatePicker (2)
- kjframeforandroid (1)
- DragSortListView (1)
- Afinal (1)
- Android-StaggeredGrid (1)
- SmoothProgressBar (1)
- ExplosionField (1)
- android-async-http (1)
- Android—circleindicator (1)
- android—stepsview (1)
- android—spanny (1)
- Android-ViewPager (2)
- android—pull layout (1)
- Android—time (1)
- PullToDismissPager (1)
- android—chart (1)
- android—pullzoomview (1)
- listviewfilter (1)
- andrAndroid-GIF (1)
- android—ListView,StickyScrollView (1)
- gradle (1)
- android—fragment (1)
- Android--Glide (2)
- Android - SharedPreferences (1)
- Android_imageview (2)
- dialog弹出框 (2)
- android-recyclerview (2)
- Android-Badger (1)
- android_dialog (2)
- android—RecyclerView (4)
- android TextView (1)
- android—topbar (1)
- android—轮播图效果 (1)
- Android—imageView (2)
- androidAndroid—button (1)
- 视频教程 (1)
- kotlin学习 (1)
- Android—tag (1)
- android—view (1)
- TabLayout (1)
- android-webView (1)
- rich-text (1)
- swiper标点样式 (1)
- image (1)
- ExpandableTextView (1)
- viewPager (0)
最新评论
-
龙哥IT:
把这些东西,放在一起,自己用的时候方便而已,不用到处找了
Android权限Uri.parse的几种用法 -
YURANUS_:
干货 哈哈哈
Android权限Uri.parse的几种用法 -
narutolzj:
楼主,AppUtils类是自定义的吗,找不到~~
获取安装的应用 -
black_smart:
...
Android权限Uri.parse的几种用法 -
liu_zheng:
博主 我想把文字换成图片 要怎么修改呢??
用linearLayout代替ListView
ListView的动态加载,想必大家在网上都看过很多资料了。我在这里也不罗嗦,提供非常简单的Demo给一些需要的人。
这个Demo里面只有两个部分,
Activity做显示,以及一个Factory创建信息。
MainActivity.java
- package com.demo;
- import java.util.List;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Handler;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.AbsListView;
- import android.widget.BaseAdapter;
- import android.widget.ListView;
- import android.widget.TextView;
- import android.widget.Toast;
- import android.widget.AbsListView.OnScrollListener;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemClickListener;
- public class MainActivity extends Activity implements OnScrollListener,OnItemClickListener {
- private ListView listView;
- private List<String> currentData;//当前视图显示的数据
- private CustomAdapter customadapter;//自定义适配器
- private View loadingView;//加载视图的布局
- private int currentPage = 1;//当前页,默认为1
- private int pageSize = 10;//每页显示十条信息
- private int last_item_position;//最后item的位置
- private boolean isLoading = false;//是否加载过,控制加载次数
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- listView=(ListView)findViewById(R.id.lv_id);
- //加载视图布局
- loadingView = LayoutInflater.from(this).inflate(R.layout.list_page_load, null);
- //创建当前用于显示视图的数据
- currentData=CreateDataFactory.createUpdateData(currentPage,pageSize);
- //添加底部加载视图
- listView.addFooterView(loadingView);
- //初始化适配器
- customadapter=new CustomAdapter();
- listView.setAdapter(customadapter);
- //滚动条监听
- listView.setOnScrollListener(this);
- //ListView监听
- listView.setOnItemClickListener(this);
- }
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem,
- int visibleItemCount, int totalItemCount) {
- last_item_position = firstVisibleItem + visibleItemCount - 1;
- if(last_item_position==totalItemCount-2){//这里控制当焦点落在某一个位置时,开始加载.
- //当前是在第9个位置开始加载,改为totalItemCount-1
- //则会在第10个位置开始加载
- System.out.println("开始加载..");
- Toast.makeText(MainActivity.this, "第 "+currentPage+" 页", Toast.LENGTH_LONG).show();
- if(!isLoading){
- new Thread(){
- public void run() {
- isLoading = true;
- //开启一个线程加载数据,否则会堵塞当前线程
- updateCurrendData();
- //发送一个消息,通知数据加载完成
- loadingHandler.sendEmptyMessage(0);
- }
- }.start();
- }
- }
- //当ListView没有FooterView时,添加FooterView(---loadingView---)
- if(listView.getFooterViewsCount()==0){
- listView.addFooterView(loadingView);
- }
- }
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- // TODO Auto-generated method stub
- }
- Handler loadingHandler = new Handler(){
- public void handleMessage(android.os.Message msg) {
- //修改adapter count
- customadapter.count = currentPage*pageSize;
- //更新
- customadapter.notifyDataSetChanged();
- //消除MSG
- loadingHandler.removeMessages(0);
- //删除FooterView
- listView.removeFooterView(loadingView);
- //进入下一页,此时视图未加载.
- isLoading = false;
- };
- };
- //添加List元素
- private void updateCurrendData(){
- //模拟联接网络以及从网络中获取数据花费的时间
- try {
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- //更新一次,当前页加1
- currentPage++;
- //获取当前要更新的数据
- List<String> updateDataList = CreateDataFactory.createUpdateData(currentPage, pageSize);
- //需要更新的数据加入当前数据集合
- for(String itemData:updateDataList){
- currentData.add(itemData);
- }
- }
- class CustomAdapter extends BaseAdapter{
- int count=currentData.size();
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return count;
- }
- @Override
- public Object getItem(int position) {
- // TODO Auto-generated method stub
- return position;
- }
- @Override
- public long getItemId(int position) {
- // TODO Auto-generated method stub
- return position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- View view=LayoutInflater.from(MainActivity.this).inflate(R.layout.list_page_item, null);
- TextView tv_content = (TextView) view.findViewById(R.id.tv_content);
- tv_content.setText(currentData.get(position));
- return view;
- }
- }
- @Override
- public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
- // TODO Auto-generated method stub
- }
- }
package com.demo; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import android.widget.AbsListView.OnScrollListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; public class MainActivity extends Activity implements OnScrollListener,OnItemClickListener { private ListView listView; private List<String> currentData;//当前视图显示的数据 private CustomAdapter customadapter;//自定义适配器 private View loadingView;//加载视图的布局 private int currentPage = 1;//当前页,默认为1 private int pageSize = 10;//每页显示十条信息 private int last_item_position;//最后item的位置 private boolean isLoading = false;//是否加载过,控制加载次数 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); listView=(ListView)findViewById(R.id.lv_id); //加载视图布局 loadingView = LayoutInflater.from(this).inflate(R.layout.list_page_load, null); //创建当前用于显示视图的数据 currentData=CreateDataFactory.createUpdateData(currentPage,pageSize); //添加底部加载视图 listView.addFooterView(loadingView); //初始化适配器 customadapter=new CustomAdapter(); listView.setAdapter(customadapter); //滚动条监听 listView.setOnScrollListener(this); //ListView监听 listView.setOnItemClickListener(this); } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { last_item_position = firstVisibleItem + visibleItemCount - 1; if(last_item_position==totalItemCount-2){//这里控制当焦点落在某一个位置时,开始加载. //当前是在第9个位置开始加载,改为totalItemCount-1 //则会在第10个位置开始加载 System.out.println("开始加载.."); Toast.makeText(MainActivity.this, "第 "+currentPage+" 页", Toast.LENGTH_LONG).show(); if(!isLoading){ new Thread(){ public void run() { isLoading = true; //开启一个线程加载数据,否则会堵塞当前线程 updateCurrendData(); //发送一个消息,通知数据加载完成 loadingHandler.sendEmptyMessage(0); } }.start(); } } //当ListView没有FooterView时,添加FooterView(---loadingView---) if(listView.getFooterViewsCount()==0){ listView.addFooterView(loadingView); } } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub } Handler loadingHandler = new Handler(){ public void handleMessage(android.os.Message msg) { //修改adapter count customadapter.count = currentPage*pageSize; //更新 customadapter.notifyDataSetChanged(); //消除MSG loadingHandler.removeMessages(0); //删除FooterView listView.removeFooterView(loadingView); //进入下一页,此时视图未加载. isLoading = false; }; }; //添加List元素 private void updateCurrendData(){ //模拟联接网络以及从网络中获取数据花费的时间 try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //更新一次,当前页加1 currentPage++; //获取当前要更新的数据 List<String> updateDataList = CreateDataFactory.createUpdateData(currentPage, pageSize); //需要更新的数据加入当前数据集合 for(String itemData:updateDataList){ currentData.add(itemData); } } class CustomAdapter extends BaseAdapter{ int count=currentData.size(); @Override public int getCount() { // TODO Auto-generated method stub return count; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view=LayoutInflater.from(MainActivity.this).inflate(R.layout.list_page_item, null); TextView tv_content = (TextView) view.findViewById(R.id.tv_content); tv_content.setText(currentData.get(position)); return view; } } @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub } }
CreateDataFactory.java
- package com.demo;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- public class CreateDataFactory {
- public static List<String> createUpdateData(int currentPage,int pageSize){
- List<String> list=new ArrayList<String>();
- for(int i=(currentPage-1)*pageSize;i<currentPage*pageSize;i++){
- list.add((i+1)+". 走在风中,今天阳光突然很温柔.");
- }
- return list;
- }}
package com.demo; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class CreateDataFactory { public static List<String> createUpdateData(int currentPage,int pageSize){ List<String> list=new ArrayList<String>(); for(int i=(currentPage-1)*pageSize;i<currentPage*pageSize;i++){ list.add((i+1)+". 走在风中,今天阳光突然很温柔."); } return list; }}
CreateDataFactory模拟了网络调取API获取信息的实现,以及API数据分页。对于ListView的优化,以及滑动事件的监听还没去完善。不过这些代码对想学习ListView的动态加载,以及分页显示来说以及够了。
发表评论
-
不同的操作,加载更多样式不同
2018-06-06 16:24 719添加包: implementation 'com.scw ... -
列表滚动底部,自动显示发回顶部按钮
2017-08-08 16:00 587AutoScrollBackLayout 在ListVie ... -
ExpandableLinearLayout列表展开和收起功能
2017-07-17 16:10 973之前接触过几个类似的功能,展开和收起,都是自己在适配器里面 ... -
WaterDropListView实现ios7仿IOS“雨滴”拖拽的下拉刷新
2016-05-28 15:13 531WaterDropListView实现ios7下拉刷新和翻页 ... -
Listview列表滑动删除效果
2015-03-05 15:43 1498package com.ryg.slideview; ... -
点击实现 图标 晃动效果
2014-03-26 10:26 945定义Animation Animation sha ... -
下拉刷新功能
2012-03-15 15:08 2204参照别人的代码,然后根据需求,拉过来的,很实用 1。首 ... -
ListView动态分页的时候,定位滚动条的位置
2011-11-23 11:25 48811。找到每一页的最后一条数据的位置 public void ... -
用linearLayout代替ListView
2011-11-02 12:18 12505因为一个界面上面的内容太多,下面ListView查看不到,想在 ... -
Listview实现多个栏目(多个标题+每个标题下的内容)
2011-11-02 12:11 13613http://qsyz2002.blog.163.com/b ... -
ListView-自动加载数据一点代码
2011-10-26 15:37 1712private List<Map<String, ... -
设置ListView每个item点击背景图片设置
2011-10-26 15:31 7741利用itemview,fire,line来 ... -
ExpandableListView基本需要
2011-10-26 15:26 1404展开 int groupCount = viewAdapte ... -
ListView--BaseAdapter
2011-10-09 17:07 977自定义Adapter继承BaseAdapter http:// ...
相关推荐
【标题】: "ListView-Snapshot-Demo" 是一个基于Android平台的开源项目,它展示了如何使用ListView快照库来优化应用程序的性能。 【描述】: 这个zip文件包含了一个名为"ListView-Snapshot-Demo"的Android应用示例,...
本示例"android-movies-demo手势交互的listview.rar"似乎是一个包含了手势交互功能的ListView实现,旨在帮助开发者学习如何为ListView添加丰富的用户交互体验。在这个项目中,我们可能会看到以下几个关键知识点: 1...
这篇教程"ListView异步加载网络大图Demo"主要讲解如何高效地在ListView中异步加载网络图片,以避免性能问题。 首先,我们需要理解Bitmap对象在Android中的内存管理。Bitmap是Android用来存储像素信息的类,占用大量...
然而,ListView的动态加载和它与ScrollView的兼容性问题,是开发者经常遇到的挑战。下面我们将深入探讨这两个主题。 **ListView动态加载** 动态加载,也称为懒加载,是为了提高应用性能和用户体验而采用的一种策略...
总之,"最简单可用listview上拉刷新下拉加载demo"是一个帮助初学者快速理解和实践ListView动态加载功能的实例。通过学习和理解这个示例,开发者可以为自己的应用添加类似的功能,提高用户体验。在实际项目中,你可能...
朋友你是不是也想对其优化,形成动态加载? 如果你也有过这样的想法,那么我们是同路人! 通过查看ListView的API,我们似乎找不到这样的接口来满足我们的需求,怎么办呢?不要忘记,我们不只是程序员,我们同样也...
在这个"ListView底部加载更多demo"中,开发者可能会提供一个简单的数据模型(如User或Article),一个自定义Adapter,一个包含滚动监听器的Activity或Fragment,以及用于加载数据的辅助类。通过分析和学习这个demo,...
总的来说,这个压缩包提供了一个Android ListView的实战案例,涵盖了无限滚动加载和返回顶部的功能,对于学习和理解Android开发中的ListView使用和优化具有很高的价值。在实际学习中,开发者应结合源代码和提供的...
这个"自定义ListView实现下拉刷新+加载更多功能Demo"旨在帮助开发者理解如何集成这样的交互效果到他们的应用中。 首先,下拉刷新功能(Pull-to-Refresh)让用户可以通过在ListView顶部向下拉动来刷新数据。这种功能...
`listview上拉加载下拉刷新demo`是一个示例项目,它演示了如何为ListView实现上拉加载更多和下拉刷新的功能,这对于处理长列表数据流的应用场景非常重要。这种功能可以提升用户体验,使用户能够轻松获取最新的或者更...
这个“安卓listview相关相关-一个简单的实现双listview共存demo”压缩包文件提供了实现两个ListView并排显示的示例,这对于构建复杂的用户界面,如显示不同类别的信息,或者在同一个屏幕中对比数据,非常有用。...
这个Demo源码提供了一个完整的工程示例,用于展示如何在ListView中添加上拉加载功能,同时显示列表页脚的加载状态。 首先,Qt Qml是一种声明式编程语言,它使得构建用户界面变得更加直观和高效。ListView是Qml中最...
在Android开发中,ListView是广泛...以上就是关于“android listview分页加载的demo【源代码】”的详细知识点介绍,通过学习和实践,开发者可以掌握在Android应用中高效展示大量数据的技巧,提升应用的性能和用户体验。
这个"AndroidListView下拉刷新-Demo.zip"文件应该包含了一个示例项目,演示了如何在ListView中实现下拉刷新的功能。 首先,下拉刷新功能允许用户通过在ListView顶部向下拉动来更新列表内容,通常用于获取最新的数据...
`ListView`的下拉刷新功能是提升用户体验的重要特性,特别是在处理动态加载数据的应用场景中。这个“android--ListView下拉刷新demo”就是一个实例,旨在帮助新手理解并实现这一功能。 `ListView`的下拉刷新通常...
本示例"ListView添加数据后动态刷新Demo"将向我们展示如何在ListView中动态加载和更新数据。动态刷新意味着当数据发生变化时,ListView能够实时反映出这些变化,而无需重新加载整个列表。 首先,我们来理解ListView...
【Android ListView详解与实践】 ...这个Demo为学习和理解Android ListView的综合使用提供了很好的实例,涵盖了从数据获取到UI展示的全过程。通过深入研究和实践,开发者能够掌握处理大数据列表和优化用户体验的技巧。
总之,"Android listview实现图片的异步加载Demo.zip"是一个很好的学习资源,它可以帮助开发者理解和实践Android中图片异步加载的关键技术,提高应用的性能和用户体验。通过深入研究和模仿这个Demo,开发者可以掌握...
本压缩包"安卓listview相关相关-项目安卓万能适配器demo以及带刷新的XListView.zip"提供了关于ListView使用的示例代码,包括万能适配器的实现和带有刷新功能的XListView。以下是对这些知识点的详细讲解: 1. **...