主界面MainActivity.class
public class MainActivity extends Activity implements OnScrollListener{private ProgressBar loadInfo;private ListView listView;private LinearLayout loadLayout;private ArrayList items;private DatabaseService service;private int currentPage = 1; //默认在第一页private static final int lineSize =10;    //每次显示数private int allRecorders = 0;  //全部记录数private int pageSize = 1;  //默认共一页private Aleph0 baseAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView = (ListView) findViewById(R.id.listview);service = new DatabaseService(this);//创建一个角标线性布局用来显示正在加载loadLayout = new LinearLayout(this);loadLayout.setGravity(Gravity.CENTER);//定义一个ProgressBar表示“正在加载”loadInfo = new ProgressBar(this,null,android.R.attr.progressBarStyleSmall);//增加组件loadLayout.addView(loadInfo, new LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));//增加到listView头部listView.addHeaderView(loadLayout);listView.setOnScrollListener(this);showAllData();}/*** 读取全部数据*/public void showAllData(){allRecorders = service.getCount();//计算总页数pageSize = (allRecorders + lineSize -1) / lineSize; items = service.getAllItems(currentPage, lineSize);Collections.reverse(items);  //倒序baseAdapter = new Aleph0();listView.setAdapter(baseAdapter);listView.setSelection(items.size());//直接定位到最底部}int firstItem=-1;@Overridepublic void onScroll(AbsListView absView, int firstVisibleItem,int visibleItemCount, int totalItemCount) {firstItem=firstVisibleItem;}@Overridepublic void onScrollStateChanged(AbsListView view, int scorllState) {if (firstItem==0&& currentPage < pageSize&& scorllState == OnScrollListener.SCROLL_STATE_IDLE) {// 不再滚动Log.e(log, 滑到第一位);currentPage++;// 增加数据appendDate();}}/*** 增加数据*/private void appendDate(){final ArrayList additems = service.getAllItems(currentPage, lineSize);Collections.reverse(additems);baseAdapter.setCount(baseAdapter.getCount() + additems.size());//判断,如果到了最末尾则去掉“正在加载”if(allRecorders == baseAdapter.getCount()){listView.removeHeaderView(loadLayout);}items.addAll(0, additems);baseAdapter.notifyDataSetChanged();listView.setSelection(additems.size());}class Aleph0 extends BaseAdapter {int count = lineSize;public int getCount() {return count;}public void setCount(int count){this.count = 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 = new TextView(MainActivity.this);view.setTextSize(60);if(items != null){view.setText(items.get(pos));}else{view.setText(pos);}return view;}}}/*** 刷新视图 **/public void setList(List bcData) {Collections.reverse(bcData);this.listMsg = bcData;notifyDataSetInvalidated();lv.setSelection(bcData.size());}/*** 加载更多 **/public void addList(final List newMsgData) {if (this.listMsg != null) {Collections.reverse(newMsgData);this.listMsg.addAll(0, newMsgData);notifyDataSetChanged();lv.setSelection(newMsgData.size() + 1);} else {setList(newMsgData);}}

2,主界面布局文件activity_main.xml

<linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"><listview android:id="@+id/listview" android:layout_height="fill_parent" android:layout_width="fill_parent"></listview></linearlayout>

4,效果图 

仿QQ、微信翻页查看聊天记录相关推荐

  1. WPF仿微信保存与查看聊天记录

    WPF仿微信保存与查看聊天记录 之前做了仿微信发送消息,当然也要有个聊天记录来保存消息内容啦,下面一起来看看 ViewModel中在服务器中创建用户与当前聊天好友的文件夹,以便存放聊天记录文件和图片文 ...

  2. android 日历翻页动画,Android 仿日历翻页、仿htc时钟翻页、数字翻页切换效果

    废话不多说,效果图: 自定义控件找自网络,使用相对简单,具体还没有来得及深入研究,只是先用笨方法大概实现了想要的效果,后续有空会仔细研究再更新文章, 本demo切换方法是用的笨方法,也就是由新数字和旧 ...

  3. 仿QQ空间图片放缩查看

    仿QQ空间图片放缩查看 仿QQ空间图片放缩查看,点击图片从原位置放大到全屏,后退从全屏缩小到原位置,效果非常好. 下载地址:http://www.devstore.cn/code/info/830.h ...

  4. 高德地图实现仿qq,微信发送位置功能实现逻辑

    定位获取当前位置 地图中间放置大头针 周边展示位置信息 周边信息点击后的逻辑操作 地图截屏功能实现 发送图片到其他页面或者服务器 获取到信息进行展示 写的不好,勿喷,有疑问可以联系我qq 130888 ...

  5. java仿QQ微信聊天室

    话不多说,先上图                                   即时通信系统:可以完成群聊.私人聊天,实时发送和显示聊天信息,完成好友列表,进一步可以带表情,附件发送,聊天信息的 ...

  6. Android仿QQ微信开场导航以及登陆界面

    相信大家对于微信等社交应用的UI界面已经都很熟悉了,该UI最值得借鉴的莫过于第一次使用的时候一些列产品介绍的图片,可以左右滑动浏览,最后进入应用,这一效果适用于多种项目中,相信今后开发应用一定会用得到 ...

  7. android 仿QQ五毛特效之查看红包领取详情界面

    这篇是15年写的 没有审核成功,今天看到,重新发布了下,没想到发布成功了~~! 首先我们看下 上下滑动的效果     从左到右依次为 往上滑动的截图 发现在滑动的过程中可以发现以下3点: 1. 发起者 ...

  8. ListView 仿QQ微信侧滑出现删除按钮

    要在ListView侧滑时出现删除等按钮,见下面效果图: 实现起来很简单,使用HorizontalScrollView将正常显示的item层及操作按钮层水平并排起来,滑动时再将操作按钮显示出来,详见代 ...

  9. android qq语音按钮,Android 仿QQ/微信语音功能。

    简单仿照一个语音效果,效果图: 所以,首先先做一个Dialog用于展示我们说话的UI: VoiceDialogManager.java /** * 语音Dialog 管理器 * Created by ...

最新文章

  1. java 多线程 进程_Java多线程1:进程与线程概述
  2. 运维自动化之 Cobbler 系统安装使用详解
  3. 案例分析:机场运作系统
  4. 2018 年度 GtiHub 开源项目 TOP 25:数据科学 机器学习
  5. 机器学习之基于SVM实现多类人脸识别
  6. thinkphp如何通过php请求接口,thinkphp怎么做json数据接口
  7. P5304-[GXOI/GZOI2019]旅行者【最短路】
  8. EM(期望极大化)算法及其推广
  9. 18年高考云南628分想学计算机,2018山东高考投档线公布!山大文624理628…快查查你学校多少分进档...
  10. python使用xlwt创建与保存excel文件
  11. java 判断二级网址_【Java】利用正則表達式推断是否为网址
  12. Vue.js总结 [2017.6.5]
  13. CFree注册码及破解过程【转】
  14. “以图搜图”的奇葩用途 | 深度
  15. JeeSite快速开发平台v4.2.2源码+在线代码生成功能
  16. 短进程优先调度算法c语言spf,短进程优先的调度算法详解
  17. 【OpenJudge 1665】完美覆盖
  18. 蓝桥杯第12届第三次模拟
  19. 为什么前端工作越来越难找了?
  20. Python列表(list)的操作及方法

热门文章

  1. html 阅读模式,最纯粹的阅读 体验浏览器清爽阅读模式
  2. python系列教程171——网页文档
  3. 计量经济学 第四版 庞皓 课后答案
  4. tsc : 无法将“tsc”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
  5. turtle setuppython_Python turtle.setup方法代碼示例
  6. 学习DOM的第二天 练习案例:表格隔行变色 表格的全选与取消全选
  7. 9适应之力加多少攻击_英雄联盟加9适应之力
  8. 机票改签费,可以抵扣进项税吗?
  9. OPPOFindN|FindX5|FindX3|FindX2|Reno8|Reno7|Reno6|Reno5|Reno4|K10|K9|K7|A55s|A93s|A53|A32|A72手撕方案
  10. PHP 设计模式 简单工厂和工厂模式