多个列表切换使用同一个listview,切换时回到各个列表之前的位置
来源:互联网 发布:数学系的学不学编程 编辑:程序博客网 时间:2024/04/19 09:08
使用环境:
同一Activity上,不同列表之间进行切换,使用同一个listview,切换时set不同adapter。每个列表需要有上拉加载的功能。
这时候如果使用 myAdapter.notifyInfo(list); myAdapter.notifyDataSetChanged();设置数据 ,虽然可以保证上拉加载后列表显示在当前页, 但是列表切换时没有给listview重新设置适配器,列表内容不会切换。
如果每次都重新setadapter ,则每次上拉加载后列表都会显示在第一页第一条数据。以下方法可以解决这个问题。(其实使用多个listview会更方便,如果其他条件限制了只能使用一个listview则可以用以下方法解决问题)
(1)对listview设置滚动监听事件
listview.setOnScrollListener(new OnScrollListener() {
/*** 滚动状态改变时调用
*/
@Override
public void onScrollStateChanged(AbsListView view,
int scrollState) {
// 不滚动时保存当前滚动到的位置
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
/* 记录两种(或更多)显示方式下 listview各自的位置 */
if (showType == 1) {
position1= lvComment.getFirstVisiblePosition();
} else if(showType=2){
position2 = lvComment.getFirstVisiblePosition();
}
}
}
/**
* 滚动时调用
*/
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
}
});
(2)显示 并设置位置
切换到列表1时:
if (adapter1 == null) {
timeAdapter = new Adapter1(this,
android.R.layout.simple_list_item_1, list1);
listview.setAdapter(adapter1);
} else {
// 刷新数据
adapter1.notifyInfo(list1);//此方法为adapter中写的方法
// 设置适配器
listview.setAdapter(adapter1);
// 显示在之前显示的item上
listview.setSelection(position1);
}
切换到列表2时:
if (adapter2 == null) {
timeAdapter = new Adapter2(this,
android.R.layout.simple_list_item_1, list2);
listview.setAdapter(adapter2);
} else {
// 刷新数据
adapter2.notifyInfo(list2);
// 设置适配器
listview.setAdapter(adapter2);
// 显示在之前显示的item上
listview.setSelection(position2);
}
- 多个列表切换使用同一个listview,切换时回到各个列表之前的位置
- 使用jquery切换列表
- 列表之间的切换
- 实用的列表切换
- 切换列表
- 列表切换
- 多tab页切换保存各个fragment状态(包括listView/GridView滑动位置)的最佳解决方法
- 多个列表直接在一个页面内的切换,简短的JS代码如下
- Android 使用addview生成列表,界面切换时将指定的行数滚动到列表的第一行
- 列表状态自动切换
- HTML 列表切换
- Demo-列表切换
- 城市列表切换
- web 列表切换
- 滑动切换时间列表
- ListView 列表播放视频,支持横竖屏无缝切换
- ListView 列表播放视频,支持横竖屏无缝切换
- 偷来的支持切换的分类列表
- 关于在Spring中Hibernate的No Session found for current thread问题
- 摄像头像素和帧数的骗局­
- python实现批量下载贴吧图片
- ORACLE 11G用于有效期
- mybatis实战教程(mybatis in action)之一:开发环境搭建
- 多个列表切换使用同一个listview,切换时回到各个列表之前的位置
- [leetcode] Interleaving String
- Composite 设计模式
- 纯JS实现的3D标签云,不依赖任何第三方库,支持移动页面
- 解决clearsilver 渲染cs_render慢
- c#做端口转发程序支持正向连接和反向链接
- android经过POST和GET两种方式发送数据到web应用实战
- 最大公约数
- MySQL性能优化的21个最佳实践 和 mysql使用索引