实现用户在ListView上进行选择时出现向上或向下获取更多提示
2017-11-25 00:00
281 查看
在项目中遇到需求,需要实现用户在ListView上进行选择时,如果上方或下方有更多未加载出来的item,需要出现向上或向下获取更多提示的效果,所以简单介绍一下相关实现方法,谨以此抛砖引玉,如果各位有更好更优雅的方法,欢迎分享。
一、布局
因为是相对布局,记得得将两个提示控件都放在ListView下方,否则会被ListView覆盖。
二、创建控制提示显示的方法
控制ListView出现向上或向下获取更多提示的关键,其实在于如何知道当前页面上显示的第一个和最后一个item的索引究竟是几,经过一番研究,最终实现如下:
三、在ListView的setOnItemSelectedListener方法中进行引用
四、最终效果
列表中一共放了20项数据
1.从上向下,看向上提示
2.从上向下,看向下提示
3.从下向上,看向下提示
4.从下向上,看向上提示
五、总结
实现用户在ListView上进行选择时出现向上或向下获取更多提示,关键在于如何知道当前页面上显示的第一个与最后一个item索引,所以需要进行一系列判断。如果对本文有什么意见和问题欢迎指正,如果觉得本文可以,请帮忙点个赞,谢谢观看。
一、布局
<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/lv_select_one" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" /> <TextView android:id="@+id/tv_up_get" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:padding="10dp" android:textSize="20sp" android:text="@string/up_to_get" android:visibility="gone" android:background="@color/light_gray"/> <TextView android:id="@+id/tv_down_get" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_alignParentBottom="true" android:padding="10dp" android:textSize="20sp" android:text="@string/down_to_get" android:visibility="gone" android:background="@color/light_gray"/> </RelativeLayout>
因为是相对布局,记得得将两个提示控件都放在ListView下方,否则会被ListView覆盖。
二、创建控制提示显示的方法
控制ListView出现向上或向下获取更多提示的关键,其实在于如何知道当前页面上显示的第一个和最后一个item的索引究竟是几,经过一番研究,最终实现如下:
/** * 控制在列表一页无法显示完全时,显示向上或向下获取更多提示信息 * @param listView * 需要进行显示的列表控件 * @param span * 每一页上显示的item数 */ private void controlPromptShown(ListView listView, int span){ if (listView.getCount() <= span){ return; } /** * 因为ListView的getFirstVisiblePosition()方法在从下往上时会出现第二个和第一个item都显示为0的情况 * getFirstVisiblePosition()方法在从上往下时,会出现倒数第二个和最后一个item都显示为最后索引位置的情况 * 所以判断将不对的情况剔除 */ if (listView.getSelectedItemPosition() != listView.getFirstVisiblePosition() && listView.getFirstVisiblePosition() == 0){ return; } if (listView.getSelectedItemPosition() != listView.getLastVisiblePosition() && listView.getLastVisiblePosition() == (listView.getCount() - 1)){ return; } if (listView.getFirstVisiblePosition() > 0){ tvUpGet.setVisibility(View.VISIBLE); } else { tvUpGet.setVisibility(View.GONE); } if (listView.getLastVisiblePosition() < (listView.getCount() - 1)){ tvDownGet.setVisibility(View.VISIBLE); } else { tvDownGet.setVisibility(View.GONE); } }
三、在ListView的setOnItemSelectedListener方法中进行引用
lvSelectOne.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //ListView每页上应该能显示的条目数 int span = parent.getHeight() / view.getHeight(); controlPromptShown((ListView) parent, span); } @Override public void onNothingSelected(AdapterView<?> parent) { } });
四、最终效果
列表中一共放了20项数据
1.从上向下,看向上提示
2.从上向下,看向下提示
3.从下向上,看向下提示
4.从下向上,看向上提示
五、总结
实现用户在ListView上进行选择时出现向上或向下获取更多提示,关键在于如何知道当前页面上显示的第一个与最后一个item索引,所以需要进行一系列判断。如果对本文有什么意见和问题欢迎指正,如果觉得本文可以,请帮忙点个赞,谢谢观看。
相关文章推荐
- 实现用户在ListView上进行选择时出现向上或向下获取更多提示
- 窗口提示,向下滚动(滑动)消失,向上滚动出现
- android窗体动画:activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失的动画实现
- Leo仿【DOTA视频站】项目实践【三】---- 获取DOTA2视频已经XListView实现上拉加载更多、下拉刷新
- ListView实现下拉刷新(第一次打开listView的界面进行自动刷新)和上拉加载更多
- android窗体动画:activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失的动画实现
- 下拉列表框只能选择,我想选择后还可以允许用户对选择的内容进行修改,如何实现可编辑的下拉列表框?
- checkbox中,根据获取的文字,如果有互斥选项,提示并取消最后选择的一个选项的实现
- 2.5 输入一个单精度浮点数,将其向零舍入到整数。说明:向零舍入的含义是,正数向下舍入,负数向上舍入。提示:可以使用强制类型转换来实现
- ASP.NET提示框,且根据用户选择执行不同代码的实现
- 用Spinner实现用户选择过程中出现的R文件丢失问题
- ListView控件演示06:如何实现用户同时选择多个列表项
- 公众号开发网页授权获取用户基本信息不弹出提示用户选择是否授权
- android窗体动画:activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失的动画实现【转】
- android窗体动画:activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失的动画实现
- ASP.NET在后台代码实现个功能,根据选择提示用户是否继续执行操作
- Android6.0运行时权限封装(避免用户选择不再提示后无法获取权限的问题)
- listView选择的项向上向下移动
- Android6.0动态申请权限那些坑--以及避免用户选择不再提示后无法获取权限的问题
- Java中实现用户点击关闭窗口按钮后提示用户,选择“是”后退到父窗口,选择“否”留在原窗口