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
分享到:
相关推荐
在Android开发中,ListView是一种常用的组件,用于展示可滚动的列表数据。然而,标准的ListView在处理大量数据或需要分组显示时可能会显得不够灵活。为了解决这个问题,开发者可以实现一个可以分段的ListView,这...
http://blog.csdn.net/icqapp/article/details/24978057 详看效果图...android listview左右滑动分页(viewpager嵌套listview进行分页),焦点图带圆焦点 先敬告学者:如在此项目上运行不了的直接找到本人QQ:508181017,
这可能涉及对Adapter的`notifyDataSetChanged()`调用,或者直接操作ListView的`setSelection()`方法来选中当前显示的分段标头。 6. 性能优化:为了提高性能,记得在`getView()`中复用convertView,避免每次创建新的...
本文将深入探讨如何实现ListView的分段显示以及拉到末尾自动刷新的源码解析。 首先,我们需要理解ListView的基本原理。ListView通过Adapter来提供数据,并使用ViewHolder优化视图复用,以提高滚动性能。Adapter负责...
综上所述,这个"android listview分页查询显示"的Demo涵盖了Android开发中的几个核心知识点,包括ListView的使用、SQLite数据库操作、分页查询和滚动监听,以及用户体验的优化。通过学习和实践这个Demo,开发者可以...
在Android中实现ListView分页功能,通常涉及到以下几个关键知识点: 1. **PagerAdapter/FragmentPagerAdapter**: 在ListView分页加载中,我们通常会结合PagerAdapter或FragmentPagerAdapter来创建一个滑动页面的...
本文将详细介绍如何在Android中实现ListView的分页功能,并结合给定的文件名"AndroidListViewFenye"来解析相关代码实现。 1. **ListView的基本理解** - ListView是Android提供的一个视图组件,用于显示一组长列表...
本文将详细讲解如何在Android中实现ListView的分页显示。 一、ListView基础 ListView是Android提供的一个可滚动视图,用于展示多个同类型的项。每个项通常由一个布局文件(XML)定义,通过Adapter进行数据绑定。...
在这个"android listView 模拟物理分页Demo 按键"项目中,开发者通过按键实现了分页加载数据的功能,以便用户逐步查看大量内容,避免一次性加载所有数据导致的性能问题。这个Demo适合初学者学习如何在ListView中实现...
本篇文章将详细讲解如何实现Android ListView的滑动分页功能。 首先,理解滑动分页的基本原理。滑动分页基于“按需加载”的概念,即仅在用户滚动到列表底部时才请求服务器获取新的数据。这样避免了一次性加载所有...
这个压缩包“Android源码——ListView分页功能源码.zip”可能包含了实现这一功能的具体代码示例。 在Android中实现ListView分页,通常有以下几种方法: 1. **使用Adapter和Pagination**: - 你需要创建一个自定义...
总结,Android中的ListView下拉刷新和分页加载是提高用户体验的关键特性。通过SwipeRefreshLayout实现下拉刷新,结合OnScrollListener实现分页加载,可以让用户更加流畅地查看和交互数据。在实际开发中,还需要注意...
本文将深入探讨“Android ListView的分页加载”这一主题,包括其原理、实现方法以及相关最佳实践。 1. 分页加载原理: 分页加载(也称为懒加载)是在用户滚动到ListView底部时,才动态加载更多数据的方法。这种...
这个实例源码“Test_Golf1”很可能包含了一个完整的ListView应用示例,帮助开发者理解如何在Android中有效地使用ListView。下面将详细阐述ListView的相关知识点。 1. **ListView基本使用**: - `ListView`是...
Android 自定义ListView实现底部分页刷新与顶部下拉刷新 一.ListView 底部分页加载 整个底部分页加载,主要分一下几步: 1.加载底部自定义View; 2.响应OnScrollListener监听事件,onScroll方法记录最后可见的View ...
关于ListView的分段显示,有现成的库可用,比如 cwac-endless, 这个库不好之处,就是底部Loading的View无法定制。还有一个在google code上的androidpageablelistview 这个可以实现基本的分页,有手动操作显示上一页...
在“Android listview 逐行显示效果”这个主题中,我们将深入探讨如何在ListView中实现逐行动画显示的效果,特别是在Android 1.6版本及eclipse环境下。本文将详细介绍如何配置环境,创建ListView,以及实现动画效果...
在这个"android listview 分页显示 demo"中,我们将探讨如何实现ListView的分页加载功能,同时利用Map进行图片缓存,以提高用户体验。 首先,分页加载是解决大数据量列表滚动卡顿的有效手段。在用户滚动到列表底部...
android listview 分页显示 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.addrlistview); // 加载Listview和2个Button ...
这个"Android应用源码 ListView下拉刷新 Demo"提供了一个实际的例子,帮助开发者了解如何在ListView中实现这一功能。 1. **SwipeRefreshLayout**:Android SDK 提供了一个名为SwipeRefreshLayout的布局容器,它是...