`
yangguangfu
  • 浏览: 1542158 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android ListView的分段显示、分页显示(附源码)

阅读更多
package com.yangguangfu.listview;

import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.LinearLayout.LayoutParams;
/**
 * 
 * @author 阿福
 *
 */
public class MainActivity extends ListActivity implements OnScrollListener {
	
	private static final String TAG = "MainActivity";
	private listViewAdapter adapter = new listViewAdapter();
	private int lastItem = 0;
	/**
	 * 设置布局显示为目标有多大就多大
	 */
    private LayoutParams WClayoutParams =new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
    /**
	 * 设置布局显示目标最大化
	 */
    private LayoutParams FFlayoutParams =new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT);
    
	private ProgressBar progressBar;

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		Log.i(TAG, "onCreate(Bundle savedInstanceState)" );
	    //线性布局
		LinearLayout layout = new LinearLayout(this);
	   //设置布局 水平方向
		layout.setOrientation(LinearLayout.HORIZONTAL);
		 //进度条
		progressBar = new ProgressBar(this);
		 //进度条显示位置
		progressBar.setPadding(0, 0, 15, 0);
		
		layout.addView(progressBar, WClayoutParams);
		
		TextView textView = new TextView(this);
		textView.setText("加载中...");
		textView.setGravity(Gravity.CENTER_VERTICAL);
		
		layout.addView(textView, FFlayoutParams);
		layout.setGravity(Gravity.CENTER);
		
		LinearLayout loadingLayout = new LinearLayout(this);
		loadingLayout.addView(layout, WClayoutParams);
		loadingLayout.setGravity(Gravity.CENTER);
		
		//得到一个ListView用来显示条目
		ListView listView = getListView();
		//添加到脚页显示
		listView.addFooterView(loadingLayout);
		//
		registerForContextMenu(listView);
		//
		setListAdapter(adapter);
		listView.setOnScrollListener(this);
	}

	public void onScroll(AbsListView v, int firstVisibleItem,
			int visibleItemCount, int totalItemCount) {
		lastItem = firstVisibleItem + visibleItemCount - 1;
		System.out.println("lastItem:" + lastItem);
		Log.i(TAG, "lastItem:" + lastItem);
		
	}

	public void onScrollStateChanged(AbsListView v, int state) {
		if (lastItem == adapter.count
				&& state == OnScrollListener.SCROLL_STATE_IDLE) {
			adapter.count += 10;
			adapter.notifyDataSetChanged();
			Log.i(TAG, "lastItem:" + lastItem);
		}
	}
  /**
   * 要用用于生成显示数据
   * @author 阿福
   *
   */
	class listViewAdapter extends BaseAdapter {
		int count = 10;

		public int getCount() {
			Log.i(TAG, "count:" + count);
			return count;
		}

		public Object getItem(int pos) {
			Log.i(TAG, "pos:" + 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.setText("阿福播放器 " + pos);
			Log.i(TAG, "entry: " + pos);
			view.setTextSize(20f);
			view.setHeight(80);
			return view;
		}
	}
}

 

 
package com.yangguangfu.listview;


import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.LinearLayout.LayoutParams;
/**
 * 
 * @author 阿福
 *
 */
public class ButtonLoadingActivity extends ListActivity    {
	private static final String TAG = "ButtonLoadingActivity";
       
    private  listViewAdapter adapter = new listViewAdapter();
    /**
	 * 设置布局显示为目标有多大就多大
	 */
    private LayoutParams WClayoutParams =new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
    /**
	 * 设置布局显示目标最大化
	 */
    private LayoutParams FFlayoutParams =new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT);
    
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
             Log.i(TAG, "onCreate(Bundle savedInstanceState):" );
              LinearLayout layout = new LinearLayout(this);
              layout.setOrientation(LinearLayout.HORIZONTAL);
             
              Button button = new Button(this);
              button.setText("点击加载下五条...");
              button.setGravity(Gravity.CENTER_VERTICAL);
               
              layout.addView(button,FFlayoutParams);
              layout.setGravity(Gravity.CENTER);
              LinearLayout loadingLayout = new LinearLayout(this);
              loadingLayout.addView(layout,WClayoutParams);
              loadingLayout.setGravity(Gravity.CENTER);
               
               
              ListView listView = getListView();
               
              listView.addFooterView(loadingLayout);
               
              button.setOnClickListener(new Button.OnClickListener()   
              {         @Override      
                 public void onClick(View v)  
              {         
                  adapter.count += 5;  
                  Log.i(TAG, "setOnClickListener:" +  adapter.count);
                  adapter.notifyDataSetChanged();
                  }      
              });  
             
          setListAdapter(adapter);  
     }


    public void onScrollStateChanged(AbsListView v, int s) {
    	 Log.i(TAG, "onScrollStateChanged(AbsListView v, int s)");
    }     

    class listViewAdapter extends BaseAdapter {
        int count = 10; /* starting amount */

        public int getCount() { return 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 textView = new TextView(ButtonLoadingActivity.this);
                 textView.setHeight(80);
                 textView.setTextSize(20);
                 textView.setText("阿福播放器 " + pos);
                 Log.i(TAG, "getView:pos:" + pos);
                return textView;
         }
     }



}

 

  • 大小: 21.6 KB
  • 大小: 18.8 KB
14
1
分享到:
评论
13 楼 xuminliang 2014-07-23  
很好用,谢谢分享
12 楼 Darjeeling2011 2013-04-26  
好人啊,楼主谢谢你
11 楼 caoxin5070 2012-06-13  
非常感谢,刚好需要这个
10 楼 wenjiefeng 2012-04-13  
谢谢分享,谢谢分享,谢谢分享,谢谢分享,
9 楼 J_Chamberlain 2011-10-18  
这种分页不需要xml的吗?
8 楼 feiphonejia 2011-09-29  
非常感谢 好人啊 
7 楼 dj4307665 2011-09-09  
正好在找这个
6 楼 l16426434 2011-08-16  
同谢~~~~~~~~~~~~~~~~~~~~~
5 楼 hdf336 2011-08-01  
这些数据是简单的循环生成绑定到listview里面,如果数据从数据库里异步加载进来,如何解决?可不这么简单了
4 楼 leesazhang 2011-07-26  
阿福辛苦了。谢谢
3 楼 ankang2577 2011-06-20  
楼主关于Android的博客写的很少,但是也可以看出来,是个高手。
2 楼 jiji 2011-03-10  
谢谢牛哥....
1 楼 teasub 2011-01-20  
非常感谢,刚好需要这个

相关推荐

    android 可以分段的ListView

    在Android开发中,ListView是一种常用的组件,用于展示可滚动的列表数据。然而,标准的ListView在处理大量数据或需要分组显示时可能会显得不够灵活。为了解决这个问题,开发者可以实现一个可以分段的ListView,这...

    android listview左右滑动分页

    http://blog.csdn.net/icqapp/article/details/24978057 详看效果图...android listview左右滑动分页(viewpager嵌套listview进行分页),焦点图带圆焦点 先敬告学者:如在此项目上运行不了的直接找到本人QQ:508181017,

    为ListView添加分段标头

    这可能涉及对Adapter的`notifyDataSetChanged()`调用,或者直接操作ListView的`setSelection()`方法来选中当前显示的分段标头。 6. 性能优化:为了提高性能,记得在`getView()`中复用convertView,避免每次创建新的...

    ListView分段显示,拉到末尾自动刷新源码

    本文将深入探讨如何实现ListView的分段显示以及拉到末尾自动刷新的源码解析。 首先,我们需要理解ListView的基本原理。ListView通过Adapter来提供数据,并使用ViewHolder优化视图复用,以提高滚动性能。Adapter负责...

    android listview分页查询显示

    综上所述,这个"android listview分页查询显示"的Demo涵盖了Android开发中的几个核心知识点,包括ListView的使用、SQLite数据库操作、分页查询和滚动监听,以及用户体验的优化。通过学习和实践这个Demo,开发者可以...

    Android ListView分页功能源码

    在Android中实现ListView分页功能,通常涉及到以下几个关键知识点: 1. **PagerAdapter/FragmentPagerAdapter**: 在ListView分页加载中,我们通常会结合PagerAdapter或FragmentPagerAdapter来创建一个滑动页面的...

    Android listView 分页功能

    本文将详细介绍如何在Android中实现ListView的分页功能,并结合给定的文件名"AndroidListViewFenye"来解析相关代码实现。 1. **ListView的基本理解** - ListView是Android提供的一个视图组件,用于显示一组长列表...

    Android中Listview分页显示

    本文将详细讲解如何在Android中实现ListView的分页显示。 一、ListView基础 ListView是Android提供的一个可滚动视图,用于展示多个同类型的项。每个项通常由一个布局文件(XML)定义,通过Adapter进行数据绑定。...

    android listView 模拟物理分页Demo 按键

    在这个"android listView 模拟物理分页Demo 按键"项目中,开发者通过按键实现了分页加载数据的功能,以便用户逐步查看大量内容,避免一次性加载所有数据导致的性能问题。这个Demo适合初学者学习如何在ListView中实现...

    Android ListView 滑动分页

    本篇文章将详细讲解如何实现Android ListView的滑动分页功能。 首先,理解滑动分页的基本原理。滑动分页基于“按需加载”的概念,即仅在用户滚动到列表底部时才请求服务器获取新的数据。这样避免了一次性加载所有...

    Android源码——ListView分页功能源码.zip

    这个压缩包“Android源码——ListView分页功能源码.zip”可能包含了实现这一功能的具体代码示例。 在Android中实现ListView分页,通常有以下几种方法: 1. **使用Adapter和Pagination**: - 你需要创建一个自定义...

    Android ListView下拉刷新和分页

    总结,Android中的ListView下拉刷新和分页加载是提高用户体验的关键特性。通过SwipeRefreshLayout实现下拉刷新,结合OnScrollListener实现分页加载,可以让用户更加流畅地查看和交互数据。在实际开发中,还需要注意...

    android listView 分页加载

    本文将深入探讨“Android ListView的分页加载”这一主题,包括其原理、实现方法以及相关最佳实践。 1. 分页加载原理: 分页加载(也称为懒加载)是在用户滚动到ListView底部时,才动态加载更多数据的方法。这种...

    Android ListView实例源码

    这个实例源码“Test_Golf1”很可能包含了一个完整的ListView应用示例,帮助开发者理解如何在Android中有效地使用ListView。下面将详细阐述ListView的相关知识点。 1. **ListView基本使用**: - `ListView`是...

    Android 自定义ListView实现底部分页刷新与顶部下拉刷新

    Android 自定义ListView实现底部分页刷新与顶部下拉刷新 一.ListView 底部分页加载 整个底部分页加载,主要分一下几步: 1.加载底部自定义View; 2.响应OnScrollListener监听事件,onScroll方法记录最后可见的View ...

    ListView实现分页功能【附Demo源码】

    关于ListView的分段显示,有现成的库可用,比如 cwac-endless, 这个库不好之处,就是底部Loading的View无法定制。还有一个在google code上的androidpageablelistview 这个可以实现基本的分页,有手动操作显示上一页...

    Android listview 逐行显示效果

    在“Android listview 逐行显示效果”这个主题中,我们将深入探讨如何在ListView中实现逐行动画显示的效果,特别是在Android 1.6版本及eclipse环境下。本文将详细介绍如何配置环境,创建ListView,以及实现动画效果...

    android listview 分页显示 demo

    在这个"android listview 分页显示 demo"中,我们将探讨如何实现ListView的分页加载功能,同时利用Map进行图片缓存,以提高用户体验。 首先,分页加载是解决大数据量列表滚动卡顿的有效手段。在用户滚动到列表底部...

    android listview 分页显示

    android listview 分页显示 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.addrlistview); // 加载Listview和2个Button ...

    Android应用源码 ListView下拉刷新 Demo

    这个"Android应用源码 ListView下拉刷新 Demo"提供了一个实际的例子,帮助开发者了解如何在ListView中实现这一功能。 1. **SwipeRefreshLayout**:Android SDK 提供了一个名为SwipeRefreshLayout的布局容器,它是...

Global site tag (gtag.js) - Google Analytics