`
dyingbleed
  • 浏览: 117371 次
  • 性别: Icon_minigender_1
  • 来自: 东莞
社区版块
存档分类
最新评论

【Android】动态更新ListView

 
阅读更多

实现效果:当滑动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
分享到:
评论
3 楼 lyjiang010 2012-06-14  
学习了,有帮助!
2 楼 NBUsher 2012-02-28  
刚好用到,3q
1 楼 yq135314 2011-12-10  
顶一个,对我有帮助

相关推荐

    ListView动态添加、移除item

    总结,动态添加和移除ListView的item是Android开发中常见的需求。通过理解ListView的工作原理,结合Adapter和数据源的管理,我们可以实现流畅且高效的列表操作。同时,利用优化技巧和动画效果,可以提升用户交互体验...

    android 动态改变listview某一条的背景颜色

    我们常见的androidlistview 都是整体改变背景颜色,我今天上传的是 动态改变listview 其中一条或者多条的背景颜色,以及改变item的颜色。 不需要添加list的点击事件 就可以完成。

    android动态加载Listview

    本项目“android动态加载Listview”旨在提供一种更实用、更贴近实际应用场景的数据动态加载解决方案。 首先,我们要理解什么是动态加载。动态加载(也称为懒加载)是在用户滚动ListView时按需加载数据的技术。它...

    android的listview嵌套listview,列表嵌套列表 android studio版本

    在Android开发中,ListView是一种常用的视图组件,用于展示大量数据列表。当需求涉及列表中的每个条目本身也需要展示一个子列表时,我们就会遇到ListView的嵌套问题。本教程将详细讲解如何在Android Studio环境下...

    【 Android 】动态改变ListView

    动态改变ListView涉及到的主要知识点包括:ListView的使用、Adapter的适配、数据绑定、图片加载和编辑器交互。 首先,ListView的基本使用:ListView是Android SDK提供的一种可以滚动显示多行数据的组件,它通过...

    android studio实现listview的增加,左滑删除

    在本文中,我们将深入探讨如何在Android Studio中实现ListView的动态增加以及左滑删除功能,这将帮助你构建更加用户友好的应用程序。 首先,我们需要创建一个ListView的基础结构。在Android Studio中,打开布局XML...

    Android ListView动态查询更新代码

    在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。动态查询和更新ListView是...通过SearchListView这个例子,我们可以学习如何在ListView中实现高效的搜索和动态更新功能,提升应用的用户体验。

    Android listview嵌套listview

    在Android开发中,ListView是一种常用的组件,用于展示可滚动的列表数据。然而,有时我们可能需要在一个ListView的项中再嵌套另一个ListView,这被称为ListView的嵌套。这样的设计可以用于展示复杂的数据结构,比如...

    Androidstudio下ListView下拉刷新

    在Android开发中,ListView是一个非常常用的组件,用于展示大量数据列表。然而,为了提供更好的用户体验,许多应用都引入了下拉刷新的功能,使得用户在顶部拉动列表时可以更新数据。本教程将指导你在Android Studio...

    android listview 动态适应高度问题

    总之,解决ListView动态适应高度问题的关键在于正确计算数据项的高度,并在数据源发生变化时及时更新ListView的布局参数。通过这种方式,我们可以在各种分辨率的设备上,确保ListView能够正确显示所有内容,提供良好...

    Android应用源码 ListView下拉刷新 Demo

    在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。ListView下拉刷新功能是现代移动应用中的一个常见特性,允许用户通过下拉列表来获取最新的数据,如社交媒体的新消息或天气更新。这个"Android...

    Android应用源码动态ListView,支持异步更新列表,异步更新图片.zip

    本示例中的“Android应用源码动态ListView,支持异步更新列表,异步更新图片.zip”提供了一个实现动态加载和异步更新功能的ListView的实例。下面将详细讲解这个主题中的关键知识点。 1. **动态ListView**: - 动态...

    android动态添加listview item并实现监听

    动态添加ListView的Item并实现监听是常见的需求,特别是在数据不确定或者需要实时更新的场景下。本篇文章将详细讲解如何实现这一功能。 首先,我们需要创建一个ListView。在布局文件(如activity_main.xml)中,...

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

    本教程将详细介绍如何根据EditText的输入内容,动态更新ListView的数据并实时显示。 首先,我们需要在布局文件中设置EditText和ListView。EditText作为搜索框,用户在此输入搜索关键词;ListView用于展示数据,我们...

    Android编程实现ListView中item部分区域添加点击事件功能

    本文实例讲述了Android编程实现ListView中item部分区域添加点击事件功能。分享给大家供大家参考,具体如下: 需求如题目:Android listview中item部分区域添加点击事件,在一个界面显示了listview,但显示的内容分为...

    Android编程实现动态更新ListView的方法

    本文实例讲述了Android编程实现动态更新ListView的方法。分享给大家供大家参考,具体如下: 有时候我们需要修改已经生成的列表,添加或者修改数据,notifyDataSetChanged()可以在修改适配器绑定的数组后,不用重新...

    Android ListView边框圆角美化

    在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。为了提升用户体验和界面设计的美观性,我们常常需要对ListView进行定制化,包括设置边框和实现圆角效果。本文将深入探讨如何在Android中实现...

    android 修改listview的不同item字体的颜色

    在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。在实际应用中,我们经常需要根据需求定制ListView,比如改变不同列表项(item)的字体颜色。标题"android 修改listview的不同item字体的颜色...

    Android动态删减ListView,类似学习经历增删,钉钉物品领用

    在Android开发中,ListView是一种常用的组件,用于展示可滚动的列表数据。在许多应用中,如钉钉的物品领用功能或网页上的教育经历展示,我们经常需要实现动态增删功能,即用户可以添加新的条目,也可以删除已有的...

    android dialog嵌套ListView

    这个场景在描述中提及,即“android dialog嵌套ListView”,其目的是实现对ListView的添加和删除操作。 首先,我们要理解`Dialog`的基本概念。`Dialog`是Android系统提供的一个组件,它以半透明的弹出窗口形式展示...

Global site tag (gtag.js) - Google Analytics