Android listview怎么实现滚动分页

合集下载

AndroidRecyclerView滚动到中间位置的方法示例

AndroidRecyclerView滚动到中间位置的方法示例

AndroidRecyclerView滚动到中间位置的⽅法⽰例最近看到QQ⾳乐的歌词每次滑动后都可以滚回到中间位置。

觉得甚是神奇,打开开发者模式显⽰布局,发现歌词部分不是采⽤ android 控件的写的,应该是前端写的。

于是,我想,能不能⽤ recyclerView 实现这个⾃动回滚到中间位置呢。

功夫不负有⼼⼈,查找了⼀些资料之后,终于搞定了。

下⾯由我细细讲来。

⽬标点击某个条⽬,在经过4s⽆任何操作之后,该条⽬滚动到中间位置显⽰。

点击后,⽤户在滑动,等⽤户不操作后再开始延时。

⽤户多次点击,记最后⼀次点击位置。

分析⾸先先考虑,滚动到指定位置是如何操作的?// 滚动到指定位置recyclerView.scrollToPosition(position);// 平滑滚动到指定位置recyclerView.smoothScrollToPosition(position);有没有滚动到制定像素位置呢?// scrollBy(x, y)这个⽅法是⾃⼰去控制移动的距离,单位是像素,所以在使⽤scrollBy(x, y)需要⾃⼰去计算移动的⾼度或宽度。

recyclerView.scrollBy(x, y)可是,问题是滚动到中间位置啊?这个怎么办呢?这样⼦⾏不⾏呢?mRecyclerView.scrollToPosition(0);mRecyclerView.scrollBy(0,400);先滚动到制定位置,在滚动⼀段距离不就好了?运⾏发现,这两⾏代码只执⾏第⼀⾏,第⼆⾏⽆效。

debug 调试看了下,还是没有弄懂,实现太复杂。

那就是说这样是不⾏的,那有没有其他办法呢?RecyclerView 有⼀个滚动监听⽅法:mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrollStateChanged(RecyclerView recyclerView, int newState) {super.onScrollStateChanged(recyclerView, newState);}@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, int dy) {super.onScrolled(recyclerView, dx, dy);}});onScrollStateChanged ⽅法对应三种状态:静⽌(SCROLL_STATE_IDLE),拖动滚动(SCROLL_STATE_DRAGGING),滑动(SCROLL_STATE_SETTLING)。

分页

分页

private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG, "onCreate(Bundle savedInstanceState)>>>>>>>>>>>>>>>" );
//给ListView添加适配器
setListAdapter(adapter);
//给ListView注册滚动监听
listView.setOnScrollListener(this);
}
@Override
public void onScroll(AbsListView v, int firstVisibleItem,
[color=red]代码如下:[/color]
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
textView.setText("加载中...");
textView.setGravity(Gravity.CENTER_VERTICAL);
//把文本加入到layout中
layout.addView(textView, FFlayoutParams);

u-list分页用法

u-list分页用法

u-list分页用法
在进行u-list分页时,可以使用不同的方法来实现,这取决于具体的需求和设计。

以下是一些常见的u-list分页用法:
1.传统分页:
2.滚动分页:
3.无限滚动分页:
4.下拉刷新:
下拉刷新是指用户在页面顶部下拉时,会触发重新加载内容的操作。

在u-list分页中,可以将下拉刷新和传统分页结合使用,当用户下拉页面时,会加载最新的内容,并将其添加到页面的顶部。

5.分段加载:
在分段加载中,页面会首先加载第一段内容,当用户滚动至页面底部时,会加载下一段内容并添加到页面的末尾。

这种方式可以在页面加载时快速显示初始内容,并在用户需要时,逐步加载更多的内容。

6.加载更多按钮:
以上是一些常见的u-list分页用法,不同的用法可以根据具体的需求和设计来选择。

在选择使用哪种分页方式时,需要考虑用户体验、页面性能及交互复杂度等因素,并根据具体情况做出权衡决策。

listview的优化方案

listview的优化方案

listview的优化方案ListView是Android开发中常用的控件之一,用于展示大量数据的列表。

然而,如果不进行适当的优化,ListView可能会导致界面卡顿,滑动不流畅等问题。

因此,本文将介绍一些ListView的优化方案,帮助开发者提升应用的用户体验。

一、使用ViewHolder优化在ListView的适配器中,使用ViewHolder模式可以大幅度提升性能。

ViewHolder可以缓存每个Item的子View,避免重复的findViewById操作。

通过ViewHolder的使用,可以减少控件查找的次数,提高列表的滚动效率。

二、使用分页加载如果列表中的数据量非常大,一次性加载可能会消耗大量的内存,导致应用崩溃或卡顿。

为了解决这个问题,可以采用分页加载的方式。

将数据分批加载,每次只加载可见范围内的数据,当需要滑动到下一页时再加载下一页的数据。

这样可以降低内存压力,提高加载速度。

三、使用缓存机制ListView会在滚动过程中频繁地调用getView方法,这会导致不断地创建和销毁Item View,影响性能。

为了减少这种开销,可以使用缓存机制。

将已经创建的Item View缓存起来,当需要显示新的Item时,先从缓存中取出已有的Item View进行复用,而不是重新创建新的Item View。

这样可以减少内存的占用和创建View的时间。

四、使用异步加载如果每个Item View中包含大量的图片或其他耗时的操作,会导致列表滑动不流畅。

为了解决这个问题,可以使用异步加载的方式。

在加载图片或执行其他耗时操作时,将其放在子线程中进行,并使用回调函数将结果传递给主线程更新UI。

这样可以保证主线程的响应速度,提升用户体验。

五、减少布局层级布局层级过多也是导致ListView性能下降的一个重要因素。

每个Item View都会经过一系列的布局计算和绘制操作,层级过多会增加这些操作的复杂性。

因此,应尽量减少布局的嵌套层级,简化布局结构,提高渲染速度。

使用ListView控件和DataPager实现数据分页显示

使用ListView控件和DataPager实现数据分页显示

使用ListView数据绑定控件和DataPager实现数据分页显示为什么使用ListView+DataPager的方式实现分页显示?提供的诸多数据绑定控件,每一种都有它自己的优点和缺点。

如果需要对数据进行操作,如果数据量不大的情况下,DataList和GridView是最好的选择,但是他们会生产额外的<table><tr><tbody><td>标签。

如果只是罗列出来一些简单的数据,出于对性能的考虑,repeater必然是首选。

当然ListView和DataPager的组合必将是开发中的黄金组合,无论从性能上和功能实现上都是很棒的控件。

扩展性强,灵活度高:ListView控件集成了DataGrid、DataList、Repeater和GridView 控件的所有功能。

它可以像Repeater控件那样,让我们在控件内写任何HTML代码。

.NET 中给我们提供的新数据绑定控件ListView和DataPager,可以说,ListView就是DataGrid和Repeater的结合体,它既有Repeater控件的开放式模板,又具有DataGrid控件的编辑特性。

这绝对是一个可以引起你兴趣的好东东,因为它给你提供了比DataGird丰富得多的布局手段,同时又具有DataGrid 的所有特性。

具有分页功能:ListView控件本身并不提供分页功能,但是我们可以通过另一个控件– DataPager来实现分页的特性。

把分页的特性单独放到另一个控件里,会给我们带来很多好处,比如说可以让别的控件使用它,又比如说我们可以把它放在页面的任何地方。

实质上,DataPager就是一个扩展ListView分页功能的控件。

ListView控件ListView是用来显示数据的,它的使用类似于Repeater控件。

ListView控件中有n多模板,出示如下:·LayoutTemplate·ItemTemplate·AlternatingItemTemplate·SelectedItemTemplate·EmptyItemTemplate·EmptyDataTemplate·ItemSeparatorTemplate·GroupTemplate·GroupSeparatorTemplate·EditItemTemplate·InsertItemTemplate它有很多的模板。

Android实现ListView分页加载数据

Android实现ListView分页加载数据

Android实现ListView分页加载数据本⽂实例为⼤家分享了ListView分页加载数据的具体代码,供⼤家参考,具体内容如下FenyeActivitypackage 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();@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_fenye);loadMoreView = getLayoutInflater().inflate(yout.load_more, null);loadMoreButton = (Button) loadMoreView.findViewById(R.id.loadMoreButton);listView = getListView(); //获取id是list的ListViewlistView.addFooterView(loadMoreView); //设置列表底部视图initAdapter();setListAdapter(adapter); //⾃动为id是list的ListView设置适配器listView.setOnScrollListener(this); //添加滑动监听}/*** 初始化适配器*/private void initAdapter() {ArrayList<String> items = new ArrayList<String>();for (int i = 0; i < 16; i++) {items.add(String.valueOf(i + 1));}adapter = new ListViewAdapter(this, items);}/*** 滑动时被调⽤*/@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {this.visibleItemCount = visibleItemCount;visibleLastIndex = firstVisibleItem + visibleItemCount - 1;}/*** 滑动状态改变时被调⽤*/@Overridepublic 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() {@Overridepublic void run() {loadData();adapter.notifyDataSetChanged(); //数据集变化后,通知adapterlistView.setSelection(visibleLastIndex - visibleItemCount + 1); //设置选中项loadMoreButton.setText("load more"); //恢复按钮⽂字}}, 1000);}}/*** 点击按钮事件* @param view*/public void loadMore(View view) {loadMoreButton.setText("loading..."); //设置按钮⽂字loadinghandler.postDelayed(new Runnable() {@Overridepublic void run() {loadData();adapter.notifyDataSetChanged(); //数据集变化后,通知adapterlistView.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));}}}ListViewAdapterpackage com.example.myapplication.fenye;import java.util.List;import android.content.Context;import youtInflater;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<String> items;private LayoutInflater inflater;public ListViewAdapter(Context context, List<String> items) {this.items = items;inflater = (LayoutInflater) context.getSystemService(YOUT_INFLATER_SERVICE); }@Overridepublic int getCount() {return items.size();}@Overridepublic Object getItem(int position) {return items.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View view, ViewGroup parent) {if (view == null) {view = inflater.inflate(yout.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<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"android:paddingLeft="3dp"android:paddingRight="3dp"><ListViewandroid:id="@id/android:list"android:layout_width="fill_parent"android:layout_height="wrap_content"/></LinearLayout>list_fy_item.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:id="@+id/list_item_text"android:layout_width="fill_parent"android:layout_height="fill_parent"android:text="aa"android:gravity="center"android:textSize="20sp"android:paddingTop="10dp"android:paddingBottom="10dp"/></LinearLayout>load_more.xml<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="wrap_content"><Buttonandroid:id="@+id/loadMoreButton"android:visibility="gone"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="load more"android:onClick="loadMore"/></LinearLayout>以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

Android中ListView分页加载数据

Android中ListView分页加载数据

Android中ListView分页加载数据Android应用开发中,采用ListView组件来展示数据是很常用的功能,当一个应用要展现很多的数据时,一般情况下都不会把所有的数据一次就展示出来,而是通过分页的形式来展示数据,个人觉得这样会有更好的用户体验。

因此,很多应用都是采用分批次加载的形式来获取用户所需的数据。

例如:微博客户端可能会在用户滑动至列表底端时自动加载下一页数据,也可能在底部放置一个"查看更多"按钮,用户点击后,加载下一页数据。

下面通过一个Demo来展示ListView功能如何实现:该Demo通过在ListView列表的底部添加一个“查看更多...”按钮来加载新闻(模拟新闻客户端)分页数据。

同时限定每次加载10条记录,但完全加载完数据后,就把ListView列表底部视图“查看更多...”删除。

假设加载的数据总数为38 条记录。

先看下该Demo工程的程序结构图:其中包com.andyidea.bean中News.java类是新闻实体类,包com.andyidea.listview中paginationListViewActivity.java类是用来展示ListView列表。

布局layout中包含三个布局文件,分别为:list_item.xml ,loadmore.xml ,main.xml 。

下面分别贴下源码:layout中的list_item.xml源码:1<span style="font-size:13px;"><?xml version="1.0"encoding="utf-8"?>2<LinearLayout3xmlns:android="/apk/res/android"4android:layout_width="fill_parent"5android:layout_height="fill_parent"6android:orientation="vertical">7<TextView8android:id="@+id/newstitle"9android:layout_width="fill_parent"10android:layout_height="wrap_content"/>11<TextView12android:id="@+id/newscontent"13android:layout_width="fill_parent"14android:layout_height="wrap_content"/>15</LinearLayout></span>layout中loadmore.xml源码:16<?xml version="1.0"encoding="utf-8"?>17<LinearLayout18xmlns:android="/apk/res/android"19android:layout_width="fill_parent"20android:layout_height="fill_parent">21<Button22android:id="@+id/loadMoreButton"23android:layout_width="fill_parent"24android:layout_height="wrap_content"25android:text="查看更多..."/>26</LinearLayout>layout中main.xml源码:27<?xml version="1.0"encoding="utf-8"?>28<LinearLayout xmlns:android="/apk/res/android"29android:orientation="vertical"30android:layout_width="fill_parent"31android:layout_height="fill_parent">32<ListView33android:id="@+id/lvNews"34android:layout_width="fill_parent"35android:layout_height="wrap_content"/>36</LinearLayou包com.andyidea.bean中News.java类源码:37package com.andyidea.bean;3839/**40 * 新闻实体类41 * @author Andy.Chen42 * @mail Chenjunjun.ZJ@43 *44 */45public class News {4647 private String title; //标题48 private String content; //内容4950 public String getTitle() {51 return title;52 }53 public void setTitle(String title) {54this.title = title;55 }56 public String getContent() {57 return content;58 }59 public void setContent(String content) {60this.content = content;61 }6263}包com.andyidea.listview中paginationListViewActivity.java类源码:64package com.andyidea.listview;6566import java.util.ArrayList;67import java.util.List;6869import com.andyidea.bean.News;7071import android.app.Activity;72import android.os.Bundle;73import android.os.Handler;74import android.util.Log;75import android.view.View;76import android.view.ViewGroup;77import android.widget.AbsListView;78import android.widget.AbsListView.OnScrollListener;79import android.widget.BaseAdapter;80import android.widget.Button;81import android.widget.ListView;82import android.widget.TextView;83import android.widget.Toast;8485public class PaginationListViewActivity extends Activity implements OnScrollListener {8687 private ListView listView;88 private int visibleLastIndex = 0; //最后的可视项索引89 private int visibleItemCount; // 当前窗口可见项总数90 private int datasize = 38; //模拟数据集的条数91 private PaginationAdapter adapter;92 private View loadMoreView;93 private Button loadMoreButton;94 private Handler handler = new Handler();9596 /** Called when the activity is first created. */97 @Override98 public void onCreate(Bundle savedInstanceState) {99 super.onCreate(savedInstanceState);100 setContentView(yout.main);101102loadMoreView = getLayoutInflater().inflate(yout.loadmore, null); 103loadMoreButton= (Button)loadMoreView.findViewById(R.id.loadMoreButton);104 loadMoreButton.setOnClickListener(new View.OnClickListener() {105106 @Override107 public void onClick(View v) {108 loadMoreButton.setText("正在加载中..."); //设置按钮文字109 handler.postDelayed(new Runnable() {110111 @Override112 public void run() {113 loadMoreData();114 adapter.notifyDataSetChanged();115 loadMoreButton.setText("查看更多..."); //恢复按钮文字116 }117 },2000);118119 }120 });121122listView = (ListView)findViewById(R.id.lvNews);123 listView.addFooterView(loadMoreView); //设置列表底部视图124 initializeAdapter();125 listView.setAdapter(adapter);126 listView.setOnScrollListener(this);127 }128129 @Override130 public void onScrollStateChanged(AbsListView view, int scrollState) { 131 int itemsLastIndex = adapter.getCount()-1; //数据集最后一项的索引132 int lastIndex = itemsLastIndex + 1;133 if (scrollState == OnScrollListener.SCROLL_STATE_IDLE134 && visibleLastIndex == lastIndex) {135 // 如果是自动加载,可以在这里放置异步加载数据的代码136 }137 }138139140 @Override141 public void onScroll(AbsListView view, int firstVisibleItem,142 int visibleItemCount, int totalItemCount) {143this.visibleItemCount = visibleItemCount;144visibleLastIndex = firstVisibleItem + visibleItemCount - 1;145146 Log.e("========================= ","========================");147 Log.e("firstVisibleItem = ",firstVisibleItem+"");148 Log.e("visibleItemCount = ",visibleItemCount+"");149 Log.e("totalItemCount = ",totalItemCount+"");150 Log.e("========================= ","========================");151152 //如果所有的记录选项等于数据集的条数,则移除列表底部视图153 if(totalItemCount == datasize+1){154 listView.removeFooterView(loadMoreView);155 Toast.makeText(this, "数据全部加载完!", Toast.LENGTH_LONG).show(); 156 }157 }158159 /**160 * 初始化ListView的适配器161 */162 private void initializeAdapter(){163 List<News>news = new ArrayList<News>();164 for(int i=1;i<=10;i++){165 News items = new News();166 items.setTitle("Title"+i);167 items.setContent("This is News Content"+i); 168 news.add(items);169 }170adapter = new PaginationAdapter(news);171 }172173 /**174 * 加载更多数据175 */176 private void loadMoreData(){177 int count = adapter.getCount();178179 if(count+10 <= datasize){180 for(int i=count+1; i<=count+10; i++){181 News item = new News();182 item.setTitle("Title"+i);183 item.setContent("This is News Content"+i); 184 adapter.addNewsItem(item);185 }186 }else{187 for(int i=count+1; i<=datasize; i++){188 News item = new News();189 item.setTitle("Title"+i);190 item.setContent("This is News Content"+i); 191 adapter.addNewsItem(item);192 }193 }194195 }196197198 class PaginationAdapter extends BaseAdapter{199200 List<News> newsItems;201202 public PaginationAdapter(List<News> newsitems){ 203this.newsItems = newsitems;204 }205206 @Override207 public int getCount() {208 return newsItems.size();209 }210211 @Override212 public Object getItem(int position) {213 return newsItems.get(position);214 }215216 @Override217 public long getItemId(int position) {218 return position;219 }220221 @Override222 public View getView(int position, View view, ViewGroup parent) {223 if(view == null){224view = getLayoutInflater().inflate(yout.list_item, null); 225 }226227 //新闻标题228 TextView tvTitle = (TextView)view.findViewById(R.id.newstitle); 229 tvTitle.setText(newsItems.get(position).getTitle());230 //新闻内容231 TextView tvContent= (TextView)view.findViewById(R.id.newscontent); 232 tvContent.setText(newsItems.get(position).getContent());233234 return view;235 }236237 /**238 * 添加数据列表项239 * @param newsitem240 */241 public void addNewsItem(News newsitem){ 242 newsItems.add(newsitem);243 }244245 }246247}最后,运行程序的结果截图如下:通过上面的截图,当我们点击"查看更多..."按钮时,就会加载下10条记录,当加载完所有的记录后,ListView的底部视图将会移除。

listview控件的滚动用法

listview控件的滚动用法

listview控件的滚动用法
Listview控件是Android开发中非常常见的一种控件,它可以
将一组数据在界面上以列表的形式展现出来。

在使用Listview控件时,我们经常会遇到需要滚动列表的情况,这时候我们可以利用Listview提供的一些方法来完成滚动操作。

1. scrollTo()方法
scrollTo()方法可以将列表滚动到指定的位置。

它接受两个参数,第一个参数为x轴方向的偏移量,第二个参数为y轴方向的偏移量。

例如,我们可以使用以下代码将列表滚动到第5个item的位置:
listView.scrollTo(0, 5 * itemViewHeight);
2. smoothScrollToPosition()方法
smoothScrollToPosition()方法可以将列表平滑滚动到指定位置。

它接受一个参数,即要滚动到的item的位置。

例如,我们可以
使用以下代码将列表平滑滚动到第5个item的位置:
listView.smoothScrollToPosition(5);
3. setSelection()方法
setSelection()方法可以将指定位置的item滚动到列表的可见
区域内。

它接受一个参数,即要滚动到的item的位置。

例如,我们
可以使用以下代码将第5个item滚动到列表的可见区域内:
listView.setSelection(5);
总之,Listview控件的滚动用法非常简单,只需要调用相应的
方法即可。

在实际开发中,我们可以根据具体的业务需求来选择合适
的滚动方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android listview怎么实现滚动分页
2011-09-26 09:07:53 我来说两句 0
我要投稿 [字体:小大] package com.test;
import android.app.ListActivity;
import android.os.Bundle;
import android.os.Handler;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.AbsListView.OnScrollListener;
import youtParams;
public class test extends ListActivity implements OnScrollListener {
Aleph0 adapter = new Aleph0();
int lastItem = 0;
int mProgressStatus = 0;
private Handler mHandler = new Handler();
ProgressBar progressBar;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout searchLayout = new LinearLayout(this);
searchLayout.setOrientation(LinearLayout.HORIZONTAL);
progressBar = new ProgressBar(this);
progressBar.setPadding(0, 0, 15, 0);
searchLayout.addView(progressBar, new
youtParams(
youtParams.WRAP_CONTENT,
youtParams.WRAP_CONTENT));
TextView textView = new TextView(this);
textView.setText("加载中...");
textView.setGravity(Gravity.CENTER_VERTICAL);
searchLayout.addView(textView, new youtParams(
youtParams.FILL_PARENT,
youtParams.FILL_PARENT));
searchLayout.setGravity(Gravity.CENTER);
LinearLayout loadingLayout = new LinearLayout(this);
loadingLayout.addView(searchLayout, new
youtParams(
youtParams.WRAP_CONTENT,
youtParams.WRAP_CONTENT));
loadingLayout.setGravity(Gravity.CENTER);
getListView().addFooterView(loadingLayout);
// Start lengthy operation in a background thread
// new Thread(new Runnable() {
// public void run() {
// while (mProgressStatus < 100) {
//
// // Update the progress bar
// mHandler.post(new Runnable() {
// public void run() {
// progressBar.setProgress(mProgressStatus);
// }
// });
// }
// }
// }).start();
registerForContextMenu(getListView());
setListAdapter(adapter);
getListView().setOnScrollListener(this);
}
public void onScroll(AbsListView v, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
//lastItem = firstVisibleItem + visibleItemCount - 1;
//System.out.println("lastItem:" + lastItem);
}
public void onScrollStateChanged(AbsListView v, int state) { // if (lastItem == adapter.count
// && state ==
OnScrollListener.SCROLL_STATE_IDLE) {
// adapter.count += 10;
// adapter.notifyDataSetChanged();
// }
if (state == OnScrollListener.SCROLL_STATE_IDLE) {
adapter.count += 10;
adapter.notifyDataSetChanged();
}
}
class Aleph0 extends BaseAdapter {
int count = 10;
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 view = new TextView(test.this);
view.setText("entry " + pos);
view.setHeight(90);
return view;
}
}
}
作者“ljbal”。

相关文档
最新文档