package com.su.morebutton;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class TestListViewGetMoreButtonActivity extends Activity {
private LinearLayout home_more;
private TextView home_tvmore;
private LinearLayout loading;
private ListView home_ListView;
private SimpleAdapter simpleAdapter;
private ArrayList<HashMap<String, String>> mylist;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
home_more = (LinearLayout) LayoutInflater.from(
TestListViewGetMoreButtonActivity.this).inflate(
R.layout.list_more, null);
home_tvmore = (TextView) home_more.findViewById(R.id.more_tv);
loading = (LinearLayout) home_more.findViewById(R.id.loading);
loading.setVisibility(View.GONE);
home_ListView = (ListView) findViewById(R.id.listView1);
home_ListView.addFooterView(home_more, null, false);//增加那个 更多按钮
home_tvmore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
home_tvmore.setVisibility(View.GONE);
loading.setVisibility(View.VISIBLE);
run = true;
Thread thread = new Thread(new ThreadDemo());//开启获取新数据的线程
thread.start();
}
});
// 初始化listview
mylist = new ArrayList<HashMap<String, String>>();
for (int i = 0; i < 7; i++) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("ItemTitle", "This is Title.....");
map.put("ItemText", "This is text.....");
mylist.add(map);
}
simpleAdapter = new SimpleAdapter(this, mylist, R.layout.item,
new String[] { "ItemTitle", "ItemText" }, new int[] {
R.id.ItemTitle, R.id.ItemText });
home_ListView.setAdapter(simpleAdapter);
}
Handler endSessionHandle = new Handler() {
@Override
public void handleMessage(Message msg) {
finish();
}
};
private boolean run = true;
class ThreadDemo implements Runnable {
Message msg = handle.obtainMessage();
public void run() {
while (run) {
msg.obj = getDate();
msg.what = 1;
handle.sendMessage(msg);
run = false;
}
}
}
Handler handle = new Handler() {
@SuppressWarnings("unchecked")
public void handleMessage(Message msg) {
if (msg.what == 1) {
Log.e("测试", "");
mylist.addAll((ArrayList<HashMap<String, String>>) msg.obj);
simpleAdapter.notifyDataSetChanged();
home_tvmore.setVisibility(View.VISIBLE);// 再次回到以前状态
loading.setVisibility(View.GONE);
}
}
};
/**
* 获取list的数据一般是来自网络
*/
private ArrayList<HashMap<String, String>> getDate() {
ArrayList<HashMap<String, String>> newList = new ArrayList<HashMap<String, String>>();
try {
for (int i = 0; i < 5; i++) {
// 执行的增加数据方法
HashMap<String, String> map = new HashMap<String, String>();
map.put("ItemTitle", "Added Title.....");
map.put("ItemText", "added text.....");
newList.add(map);
if (i == 4) {
}
Thread.sleep(500);
}
} catch (Exception e) {
e.printStackTrace();
Log.e("WeiboPub", e.getMessage());
}
return newList;
}
}
http://dl.vmall.com/c0jnos5z6k
分享到:
相关推荐
Android SDK提供了一个AbsListView.OnScrollListener接口,我们可以为ListView设置该监听器,通过实现`onScrollStateChanged()`和`onScroll()`方法来判断是否已经滚动到底部。例如,当滚动状态改变且最后一条数据...
滑动分页技术是当用户滚动到底部时,自动加载更多数据的功能,这在处理大量数据时非常实用,可以提高用户体验并节省流量。本篇文章将详细讲解如何实现Android ListView的滑动分页功能。 首先,理解滑动分页的基本...
1. 加载指示器:在加载更多数据时,显示一个加载指示器,如ProgressBar,告诉用户数据正在加载。 2. 错误处理:处理加载失败的情况,如显示错误提示,提供重试功能。 3. 懒加载:首次加载数据时,只加载第一屏,滚动...
2. Load More Button:除了自动加载,还可以提供一个“加载更多”按钮,让用户手动触发加载。 3. Pagination Size:合理设置每页加载的数据量,过多可能会导致性能问题,过少则可能频繁触发加载。 4. DiffUtil:...
7. **错误处理和重试机制**:在网络请求失败时,应有相应的错误处理机制,例如显示错误信息,提供重试按钮让用户重新尝试加载更多数据。 8. **数据缓存策略**:为了提高性能,可以考虑在内存或本地存储中缓存已加载...
本篇文章将深入探讨Android中的按钮分页与滑动分页机制。 一、按钮分页 按钮分页通常涉及在底部或顶部设置“上一页”和“下一页”的按钮,用户点击这些按钮来切换页面。实现这种分页的方法通常包括以下步骤: 1. ...
总的来说,这个Demo提供了一个基础的ListView分页实现,通过按键控制加载更多数据。对于新手来说,理解并实践这个例子有助于掌握Android中数据列表的分页加载,为进一步提升用户体验打下基础。同时,学习如何集成...
6. **错误处理**:处理网络请求失败的情况,如显示错误信息,提供重试按钮,或者允许用户手动触发加载更多。 博客链接(http://blog.csdn.net/wild46cat/article/details/52620370)可能提供了更详细的实现步骤和...
综上所述,实现ListView的分页加载“底部加载更多”功能,不仅涉及到了ListView的基本使用,还包括了事件监听、异步加载、数据处理和用户交互等多个方面,这些知识点都是Android开发中不可或缺的部分。在实际项目中...
- ** footerview**:在ListView底部添加一个“加载更多”视图,作为列表的一部分,当需要加载下一页数据时,显示加载状态。 - **异步加载**:为了不阻塞主线程,分页加载通常在子线程中执行,通过AsyncTask或其他...
1. EndlessScrolling:当数据源有无限数据时,可以实现EndlessScrolling,即用户滚动到底部时自动加载下一页,无需手动点击加载更多按钮。 2. Load More Button:对于有限数据,可以在到达底部时显示“加载更多”...
可以在“加载更多”视图中添加一个“重试”按钮,或者显示错误消息。 六、优化与性能 1. 使用ViewHolder优化 为提高ListView的滚动性能,需实现ViewHolder模式,减少视图对象的创建和查找。 2. 数据缓存 可以将已...
1. 创建一个自定义的ListView,继承自Android的AbsListView或ListView类,增加必要的刷新和加载更多逻辑。 2. 实现滑动监听器,例如使用OnScrollListener,检测用户滚动到底部或顶部的事件。 3. 设计并实现刷新动画...
一个基本的分页控件通常包括页码显示、加载更多按钮以及可能的刷新功能。可以使用XML布局文件来定义这些元素,如ImageView用于图标,TextView用于页码显示,Button用于触发加载更多操作。在布局文件中,记得为这些...
这个"Android ListView分页功能源码"的压缩包提供了实现ListView分页加载的示例代码,这对于优化用户界面和提升性能至关重要。分页加载可以减少一次性加载大量数据的需求,从而避免内存消耗过大和应用卡顿。 首先,...
此外,对于用户体验的提升,我们可以在ListView中加入下拉刷新和上拉加载更多功能。这可以通过集成诸如SwipeRefreshLayout和RecyclerView等更现代的组件来实现。使用RecyclerView时,配合使用LinearLayoutManager和...
分页通常通过“加载更多”按钮或“上拉刷新”来实现。开发者需要维护一个页码或游标来追踪加载的数据。网络请求参数中需包含当前页信息,服务器返回对应页的数据。此外,可以利用“无限滚动”效果,当用户接近...
在Android开发中,ListView是一个非常常见且重要的组件,它用于展示大量的数据列表,例如联系人、消息等。本文将深入探讨如何对ListView进行自定义、优化以及实现分页功能。 一、ListView自定义 1. 自定义适配器:...
ListView是一个可滚动的视图,它可以在单个屏幕上显示多个行数据,并允许用户滚动浏览更多内容。ListView通常与Adapter类一起使用,Adapter是连接数据源(如数组或数据库查询结果)和ListView之间的桥梁。Adapter将...
本文将详细介绍 Android Studio 中 ListView 的实现列表数据显示和循环显示效果,帮助开发者更好地掌握 ListView 的使用和应用。 ListView 的基本概念 ListView 是 Android 中的一个控件,用于显示大量数据的列表...