实现效果:当滑动ListView列表最底端时,动态的添加新的列表项
实现步骤:
调用ListView的setOnScrollListener()方法设置滑动监听器,实现OnScrollListener接口的方法
判断当列表滑动到最低端时,加载新的列表项
接口OnScrollListener
onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
view 报告滑动状态的视图
firstVisibleItem 可视的第一个列表项的索引
visibleItemCount 可视的列表项个数
totalItemCount 总共的列表项个数
onScrollStateChanged(AbsListView view, int scrollState)
view 报告滑动状态的视图
scrollState 滑动状态
滑动状态
SCROLL_STATE_IDLE : 0 视图没有滑动
SCROLL_STATE_TOUCH_SCROLL : 1 用户正在触摸滑动,手指仍在屏幕上
SCROLL_STATE_FLING : 2 用户之前触摸滑动,现在正在滑行,直到停止
示例代码:
package dyingbleed.iteye;
import android.app.ListActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Gravity;
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;
public class Main extends ListActivity {
private ListView listView;
private MyListViewAdapter adapter;
private int scrollState;
private View footerView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listView = getListView();
footerView = LayoutInflater.from(this).inflate(R.layout.progress, null);
listView.addFooterView(footerView); //在ListView底部添加正在加载视图
//注意:addFooterView方法需要在调用setListAdapter方法前调用!
adapter = new MyListViewAdapter();
setListAdapter(adapter);
getListView().setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
Main.this.scrollState = scrollState;
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
int lastVisibleItem = firstVisibleItem + visibleItemCount - 1; //可视的最后一个列表项的索引
/*
* 当列表正处于滑动状态且滑动到列表底部时,执行
* */
if(Main.this.scrollState != AbsListView.OnScrollListener.SCROLL_STATE_IDLE
&& lastVisibleItem == totalItemCount - 1) {
/*
* 执行线程,睡眠5秒钟后添加10个列表项
* */
new Thread() {
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
adapter.count += 10;
adapter.notifyDataSetChanged();
}
};
@Override
public void run() {
super.run();
try {
sleep(5000);
handler.sendEmptyMessage(0);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
}
}
});
}
private class MyListViewAdapter extends BaseAdapter {
int count = 50; //初始列表项数量
@Override
public int getCount() {
return count;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView result = (TextView) convertView;
if(result == null) {
result = new TextView(Main.this);
result.setTextAppearance(Main.this, android.R.style.TextAppearance_Large);
AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(AbsListView.LayoutParams.FILL_PARENT,
AbsListView.LayoutParams.WRAP_CONTENT);
result.setLayoutParams(layoutParams);
result.setGravity(Gravity.CENTER);
}
result.setText("Item "+(position+1));
return result;
}
}
}
运行结果
- 大小: 26.2 KB
分享到:
相关推荐
总结,动态添加和移除ListView的item是Android开发中常见的需求。通过理解ListView的工作原理,结合Adapter和数据源的管理,我们可以实现流畅且高效的列表操作。同时,利用优化技巧和动画效果,可以提升用户交互体验...
我们常见的androidlistview 都是整体改变背景颜色,我今天上传的是 动态改变listview 其中一条或者多条的背景颜色,以及改变item的颜色。 不需要添加list的点击事件 就可以完成。
本项目“android动态加载Listview”旨在提供一种更实用、更贴近实际应用场景的数据动态加载解决方案。 首先,我们要理解什么是动态加载。动态加载(也称为懒加载)是在用户滚动ListView时按需加载数据的技术。它...
在Android开发中,ListView是一种常用的视图组件,用于展示大量数据列表。当需求涉及列表中的每个条目本身也需要展示一个子列表时,我们就会遇到ListView的嵌套问题。本教程将详细讲解如何在Android Studio环境下...
动态改变ListView涉及到的主要知识点包括:ListView的使用、Adapter的适配、数据绑定、图片加载和编辑器交互。 首先,ListView的基本使用:ListView是Android SDK提供的一种可以滚动显示多行数据的组件,它通过...
在本文中,我们将深入探讨如何在Android Studio中实现ListView的动态增加以及左滑删除功能,这将帮助你构建更加用户友好的应用程序。 首先,我们需要创建一个ListView的基础结构。在Android Studio中,打开布局XML...
在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。动态查询和更新ListView是...通过SearchListView这个例子,我们可以学习如何在ListView中实现高效的搜索和动态更新功能,提升应用的用户体验。
在Android开发中,ListView是一种常用的组件,用于展示可滚动的列表数据。然而,有时我们可能需要在一个ListView的项中再嵌套另一个ListView,这被称为ListView的嵌套。这样的设计可以用于展示复杂的数据结构,比如...
在Android开发中,ListView是一个非常常用的组件,用于展示大量数据列表。然而,为了提供更好的用户体验,许多应用都引入了下拉刷新的功能,使得用户在顶部拉动列表时可以更新数据。本教程将指导你在Android Studio...
总之,解决ListView动态适应高度问题的关键在于正确计算数据项的高度,并在数据源发生变化时及时更新ListView的布局参数。通过这种方式,我们可以在各种分辨率的设备上,确保ListView能够正确显示所有内容,提供良好...
在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。ListView下拉刷新功能是现代移动应用中的一个常见特性,允许用户通过下拉列表来获取最新的数据,如社交媒体的新消息或天气更新。这个"Android...
本示例中的“Android应用源码动态ListView,支持异步更新列表,异步更新图片.zip”提供了一个实现动态加载和异步更新功能的ListView的实例。下面将详细讲解这个主题中的关键知识点。 1. **动态ListView**: - 动态...
动态添加ListView的Item并实现监听是常见的需求,特别是在数据不确定或者需要实时更新的场景下。本篇文章将详细讲解如何实现这一功能。 首先,我们需要创建一个ListView。在布局文件(如activity_main.xml)中,...
本教程将详细介绍如何根据EditText的输入内容,动态更新ListView的数据并实时显示。 首先,我们需要在布局文件中设置EditText和ListView。EditText作为搜索框,用户在此输入搜索关键词;ListView用于展示数据,我们...
本文实例讲述了Android编程实现ListView中item部分区域添加点击事件功能。分享给大家供大家参考,具体如下: 需求如题目:Android listview中item部分区域添加点击事件,在一个界面显示了listview,但显示的内容分为...
本文实例讲述了Android编程实现动态更新ListView的方法。分享给大家供大家参考,具体如下: 有时候我们需要修改已经生成的列表,添加或者修改数据,notifyDataSetChanged()可以在修改适配器绑定的数组后,不用重新...
在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。为了提升用户体验和界面设计的美观性,我们常常需要对ListView进行定制化,包括设置边框和实现圆角效果。本文将深入探讨如何在Android中实现...
在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。在实际应用中,我们经常需要根据需求定制ListView,比如改变不同列表项(item)的字体颜色。标题"android 修改listview的不同item字体的颜色...
在Android开发中,ListView是一种常用的组件,用于展示可滚动的列表数据。在许多应用中,如钉钉的物品领用功能或网页上的教育经历展示,我们经常需要实现动态增删功能,即用户可以添加新的条目,也可以删除已有的...
这个场景在描述中提及,即“android dialog嵌套ListView”,其目的是实现对ListView的添加和删除操作。 首先,我们要理解`Dialog`的基本概念。`Dialog`是Android系统提供的一个组件,它以半透明的弹出窗口形式展示...