我的编程空间,编程开发者的网络收藏夹

Android ListView数据的分批显示功能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android ListView数据的分批显示功能

Android ListView数据的分批显示

布局文件activity_call_safe2.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" >
  <RelativeLayout 
    android:layout_width="match_parent"
   android:layout_height="wrap_content"
    >
    <TextView 
 style="@style/TitleStyle"
   android:text="黑名单管理"
    />
    <Button 
      android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:text="添加"
      />
  </RelativeLayout>
  <FrameLayout 
    android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:layout_weight="11"
    >
    <LinearLayout 
      android:id="@+id/ll_pb"
      android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:visibility="invisible"
    android:orientation="vertical"
    >
    <ProgressBar
      android:layout_width="wrap_content"
    android:layout_height="wrap_content"
      />
    <TextView 
      android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="玩命加载中..."
      />
    </LinearLayout>
   <include 
     android:id="@+id/list_view_callsafe"
     layout="@layout/list_view_callsafe"/>
  </FrameLayout>
</LinearLayout>逻辑文件,实现页面的分页显示,监听ListView的滑动事件,滑动的时候就更新数据

CasllSafeActivity.java


package com.ldw.safe.Activity;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.ldw.safe.R;
import com.ldw.safe.adapter.MyBaseAdapter;
import com.ldw.safe.bean.BlackNumberInfo;
import com.ldw.safe.db.dao.BlackNumberDao;
public class CallSafeActivity extends Activity {
 private ListView list_view_callsafe;
 private List<BlackNumberInfo> blackNumberInfos;
 private LinearLayout ll_pb;
 private BlackNumberDao dao;
 private CallSafeAdapter adapter;
 private int totalNumber;//总的条数
 private int mStartIndex = 0;//开始加载的位置
 private int maxCount = 20;//每页加载多少数据
 @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_call_safe2);
    initUi();
    initData();
 }
 //初始化数据
 private Handler handler = new Handler(){
 @Override
    public void handleMessage(Message msg) {
  //数据初始化结束,关闭家在全的展示
  ll_pb.setVisibility(View.INVISIBLE);
  //防止适配器一直刷新
  if(adapter == null){
  adapter = new CallSafeAdapter(blackNumberInfos, CallSafeActivity.this);
  //配置适配器
  list_view_callsafe.setAdapter(adapter);
  }else{
   adapter.notifyDataSetChanged();
  }
 }
 };
 private EditText et_page_number;
 //初始化数据
 private void initData() {
 //防止阻塞主线程,在子线程中初始化数据(后期数据会很多)
 new Thread(){
  @Override
  public void run(){
  dao = new BlackNumberDao(CallSafeActivity.this);
   //一共有多少条数据
     totalNumber = dao.getTotalNumber();
  //分批加载数据
     if(blackNumberInfos == null){
      //第一次加载
      blackNumberInfos = dao.findPar2(mStartIndex, maxCount);
     }else{
      //把后面的数据。追加到blackNumberInfos集合里面。防止黑名单被覆盖
      blackNumberInfos.addAll(dao.findPar2(mStartIndex, maxCount));
     }
  handler.sendEmptyMessage(0);
  }
 }.start();
 }
 //初始化UI
 private void initUi() {
 ll_pb = (LinearLayout) findViewById(R.id.ll_pb);
    //初始化的时候展示加载的圆圈
    ll_pb.setVisibility(View.VISIBLE);
 list_view_callsafe = (ListView) findViewById(R.id.list_view_callsafe);
 //设置listView的滚动监听器
 list_view_callsafe.setOnScrollListener(new OnScrollListener(){
      //状态改变时候回调的方法
      
  @Override
  public void onScrollStateChanged(AbsListView view, int scrollState) {
        switch (scrollState) {
        case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
          //获取到最后一条显示的数据条数
          int lastVisiblePosition = list_view_callsafe.getLastVisiblePosition();
          System.out.println("lastVisiblePosition==========" + lastVisiblePosition);
            if(lastVisiblePosition == blackNumberInfos.size() - 1){//判断最后一个数据是不是每页显示的数据-1
              // 加载更多的数据。 更改加载数据的开始位置
              mStartIndex += maxCount;
              if (mStartIndex >= totalNumber) {
                Toast.makeText(getApplicationContext(),
                    "没有更多的数据了。", Toast.LENGTH_SHORT).show();
                return;
              }
              initData();
            }
          break;
      }
  }
  //listview滚动的时候调用的方法
      //时时调用。当我们的手指触摸的屏幕的时候就调用
  @Override
  public void onScroll(AbsListView view, int firstVisibleItem,
   int visibleItemCount, int totalItemCount) {
  // TODO Auto-generated method stub
  }
 });
 }
 //对代码进行优化,继承自定义MyBaseAdapter,MyBaseAdapter继承自BaseAdapter封装一些常用的方法
 private class CallSafeAdapter extends MyBaseAdapter<BlackNumberInfo>{
 private CallSafeAdapter(List lists, Context mContext){
  super(lists, mContext);
 }
 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  //谷歌推出的优化方案
  ViewHolder holder;
  if(convertView == null){
  convertView = View.inflate(CallSafeActivity.this, R.layout.item_call_safe, null);
  holder = new ViewHolder();
  holder.tv_number = (TextView) convertView.findViewById(R.id.tv_number);
  holder.tv_mode = (TextView) convertView.findViewById(R.id.tv_mode);
  holder.iv_delete = (ImageView) convertView.findViewById(R.id.iv_delete);
  convertView.setTag(holder);
  }else{
  holder = (ViewHolder) convertView.getTag();
  }
  holder.tv_number.setText(lists.get(position).getNumber());
  String mode = lists.get(position).getMode();
  if(mode.equals("1")){
  holder.tv_mode.setText("电话和短信拦截");
  }else if(mode.equals("2")){
  holder.tv_mode.setText("电话拦截");
  }else if(mode.equals("3")){
  holder.tv_mode.setText("短信拦截");
  }
  final BlackNumberInfo info = lists.get(position);
  //监听删除数据按钮,删除数据
  holder.iv_delete.setOnClickListener(new OnClickListener(){
  @Override
  public void onClick(View v) {
   String number = info.getNumber();
   boolean result = dao.delete(number);
   if(result){
   Toast.makeText(CallSafeActivity.this, "删除成功", Toast.LENGTH_SHORT).show();
   lists.remove(info);
   //更新ListView
   adapter.notifyDataSetChanged();
   }else{
   Toast.makeText(CallSafeActivity.this, "删除失败", Toast.LENGTH_SHORT).show();
   }
  }
  });
  return convertView;
  
  
  
 } 
 }
 static class ViewHolder{
 TextView tv_number;
 TextView tv_mode;
 ImageView iv_delete;
 }
}

以上所述是小编给大家介绍的Android ListView数据的分批显示功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android ListView数据的分批显示功能

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android ListView数据的分批显示功能

Android ListView数据的分批显示 布局文件activity_call_safe2.xml 2022-06-06

如何在Android应用中分批显示 ListView数据

这期内容当中小编将会给大家带来有关如何在Android应用中分批显示 ListView数据,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Android ListView数据的分批显示布局文件activit
2023-05-31

Android studio listview实现列表数据显示 数据循环显示

Android studio listview实现列表数据显示样式不好看!想要好看的样式可以私我,我加! item.xmlmain.xmlMainActivity .java public class MainActivity extend
2022-06-06

Android中ListView分页加载数据功能实现

熟悉Android的朋友们都知道,不管是微博客户端还是新闻客户端,都离不开列表组件,可以说列表组件是Android数据展现方面最重要的组件,我们今天就要讲一讲列表组件ListView加载数据的相关内容。通常来说,一个应用在展现大量数据时,
2022-06-06

Android studio listview实现列表数据显示 数据循环显示效果

Android studio listview实现列表数据显示样式不好看!想要好看的样式可以私我,我加! item.xml
2022-06-06

android开发教程之listview显示sqlite数据

代码如下:package com.it.db; import java.util.List;import com.it.dao.PersonDao;import com.it.domain.Person;import android.os.
2022-06-06

Android 根据EditText搜索框ListView动态显示数据

根据EditText搜索框ListView动态显示数据是根据需求来的,觉得这之中涉及的东西可能比较的有意思,所以动手来写一写,希望对大家有点帮助。 首先,我们来分析下整个过程: 1、建立一个layout,包含一个EditText搜索框和一个
2022-06-06

Android之ListView分页加载数据功能实现代码

什么是ListView分页加载数据功能呢?在现在的大数据时代,我们不可能把某些数据全部展示到界面,好比我们经常会看的QQ空间一样,当你看动态的时候,系统不可能会把所有好友的动态都展示在上面,你能看到的一般都是最新好友更新的动态,假如你要看非
2022-06-06

Android ListView数据绑定显示的三种解决方法

首先,创建一个用于显示一个item的layout,名为item.xml 代码如下:2022-06-06

Android编程实现分页加载ListView功能示例

本文实例讲述了Android编程实现分页加载ListView功能。分享给大家供大家参考,具体如下:package eoe.listview; import android.app.Activity; import android.datab
2022-06-06

怎么在Android中利用 listview对数据进行显示

怎么在Android中利用 listview对数据进行显示?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Android listview数据显示及提示信息的实例最近我们测试人
2023-05-31

Android编程使用ListView实现数据列表显示的方法

本文实例讲述了Android编程使用ListView实现数据列表显示的方法。分享给大家供大家参考,具体如下: 要将数据库中的数据列表显示在屏幕上,我们要使用ListView这个控件,当用户从数据库中取出数据时,要将数据绑定到显示控件上,如何
2022-06-06

Android操作SQLite数据库(增、删、改、查、分页等)及ListView显示数据的方法详解

本文实例讲述了Android操作SQLite数据库(增、删、改、查、分页等)及ListView显示数据的方法。分享给大家供大家参考,具体如下: 由于刚接触android开发,故此想把学到的基础知识记录一下,以备查询,故此写的比较啰嗦: 步骤
2022-06-06

Android中如何实现SQLite事务处理结合Listview列表显示功能

小编给大家分享一下Android中如何实现SQLite事务处理结合Listview列表显示功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:前面的文章里
2023-05-30

Android应用中使用ListView来分页显示刷新的内容

点击按钮刷新 1、效果如下:实例如下: 上图的添加数据按钮可以换成一个进度条 因为没有数据所以我加了一个按钮添加到数据库用于测试;一般在服务器拉去数据需要一定的时间,所以可以弄个进度条来提示用户: 点击加载按钮的时候,向数据库读取一次数
2022-06-06

Android软键盘的显示隐藏功能实现过程

一、软键盘显示的原理 软件盘的本质是什么?软键盘其实是一个Dialog! InputMethodService为我们的输入法创建了一个Dialog,并且将该Dialog的Window的某些参数(如Gravity)进行了设置,
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录