Android怎么实现ListView分页加载数据
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"Android怎么实现ListView分页加载数据"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能
千家信息网最后更新 2026年11月01日Android怎么实现ListView分页加载数据
本篇内容介绍了"Android怎么实现ListView分页加载数据"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
FenyeActivity
package com.example.myapplication.fenye;import androidx.appcompat.app.AppCompatActivity;import android.app.ListActivity;import android.os.Bundle;import android.os.Handler;import android.util.Log;import android.view.View;import android.widget.AbsListView;import android.widget.Button;import android.widget.ListView;import com.example.myapplication.R;import java.util.ArrayList;public class FenyeActivity extends ListActivity implements AbsListView.OnScrollListener { private ListView listView; private int visibleLastIndex = 0; //最后的可视项索引 private int visibleItemCount; // 当前窗口可见项总数 private ListViewAdapter adapter; private View loadMoreView; private Button loadMoreButton; private Handler handler = new Handler(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fenye); loadMoreView = getLayoutInflater().inflate(R.layout.load_more, null); loadMoreButton = (Button) loadMoreView.findViewById(R.id.loadMoreButton); listView = getListView(); //获取id是list的ListView listView.addFooterView(loadMoreView); //设置列表底部视图 initAdapter(); setListAdapter(adapter); //自动为id是list的ListView设置适配器 listView.setOnScrollListener(this); //添加滑动监听 } /** * 初始化适配器 */ private void initAdapter() { ArrayList items = new ArrayList(); for (int i = 0; i < 16; i++) { items.add(String.valueOf(i + 1)); } adapter = new ListViewAdapter(this, items); } /** * 滑动时被调用 */ @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { this.visibleItemCount = visibleItemCount; visibleLastIndex = firstVisibleItem + visibleItemCount - 1; } /** * 滑动状态改变时被调用 */ @Override public void onScrollStateChanged(AbsListView view, int scrollState) { int itemsLastIndex = adapter.getCount() - 1; //数据集最后一项的索引 int lastIndex = itemsLastIndex + 1; //加上底部的loadMoreView项 if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE && visibleLastIndex == lastIndex) { //如果是自动加载,可以在这里放置异步加载数据的代码 Log.e("wy", "loading..."); handler.postDelayed(new Runnable() { @Override public void run() { loadData(); adapter.notifyDataSetChanged(); //数据集变化后,通知adapter listView.setSelection(visibleLastIndex - visibleItemCount + 1); //设置选中项 loadMoreButton.setText("load more"); //恢复按钮文字 } }, 1000); } } /** * 点击按钮事件 * @param view */ public void loadMore(View view) { loadMoreButton.setText("loading..."); //设置按钮文字loading handler.postDelayed(new Runnable() { @Override public void run() { loadData(); adapter.notifyDataSetChanged(); //数据集变化后,通知adapter listView.setSelection(visibleLastIndex - visibleItemCount + 1); //设置选中项 loadMoreButton.setText("load more"); //恢复按钮文字 } }, 1000); } /** * 模拟加载数据 */ private void loadData() { int count = adapter.getCount(); for (int i = count; i < count + 10; i++) { adapter.addItem(String.valueOf(i + 1)); } }} ListViewAdapter
package com.example.myapplication.fenye;import java.util.List;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import com.example.myapplication.R;public class ListViewAdapter extends BaseAdapter { private List items; private LayoutInflater inflater; public ListViewAdapter(Context context, List items) { this.items = items; inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return items.size(); } @Override public Object getItem(int position) { return items.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View view, ViewGroup parent) { if (view == null) { view = inflater.inflate(R.layout.list_fy_item, null); } TextView text = (TextView) view.findViewById(R.id.list_item_text); if(null!=items){ text.setText(items.get(position)); } return view; } /** * 添加列表项 * @param item */ public void addItem(String item) { items.add(item); }} activity_fenye.xml
list_fy_item.xml
load_more.xml
"Android怎么实现ListView分页加载数据"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
数据
按钮
文字
内容
底部
更多
知识
索引
适配器
变化
适配
实用
学有所成
接下来
事件
代码
困境
实际
总数
情况
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
云信互联网科技有限公司
科技与互联网发展
互联网 科技创业
互联网科技公司怎么样
杭州互联网科技公司
广州善班互联网科技
金融科技和互联网金融
互联网系的金融科技公司
武汉健翔互联网络科技有限公司
互联网科技公司实习生
华夏互联网科技业
卓翼科技产业互联网合作
互联网金融科技名词解释
互联网科技圈年度人物
杭州披云加互联网科技有限公司
广东鹅鹅鹅互联网科技有限公司
广西科技产业互联网是什么
互联网科技收购价值
杭州科技互联网公司有哪些
互联网企业和网络科技有限公司
小米移动互联网科技园
中国 科技 互联网
融贸通互联网科技
互联网科技公司做什么
互联网科技有哪些公司
河南住房之家互联网科技
互联网科技如何创业
互联网公司高科技产品
银川新华互联网科技学校原画
美国五大互联网科技公司市值多少