Android listview数据显示及提示信息的实例
程序员文章站
2023-12-13 22:17:22
android listview数据显示及提示信息的实例
最近我们测试人员说,我们的所有的列表都要做一个没有数据就提示没有数据,当时我的表情是这样的 =_=!...
android listview数据显示及提示信息的实例
最近我们测试人员说,我们的所有的列表都要做一个没有数据就提示没有数据,当时我的表情是这样的 =_=!!! 我的天呐……这么多列表真的要一个一个做嘛!!!然后我想了一下,那就直接改造listview吧……说干就干。
没有数据的效果:
有数据的效果:
代码: nodatalistview.java
package com.tianjs.tianjinsuop2p.widgets; import android.content.context; import android.content.res.typedarray; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.graphics.canvas; import android.graphics.paint; import android.util.attributeset; import android.widget.adapter; import android.widget.listview; import com.tianjs.tianjinsuop2p.r; /** * created by xiaolei on 2017/4/28. */ public class nodatalistview extends listview { private int height = 0; private int width = 0; private bitmap nodatabitmap = null; private paint mpaint; private int minitem = 0; private int nodataimgint = 0; public nodatalistview(context context) { this(context, null); } public nodatalistview(context context, attributeset attrs) { this(context, attrs, 0); } public nodatalistview(context context, attributeset attrs, int defstyleattr) { super(context, attrs, defstyleattr); typedarray array = context.obtainstyledattributes(attrs, r.styleable.nodatalistview); nodataimgint = array.getresourceid(r.styleable.nodatalistview_nodataimg, 0); minitem = array.getint(r.styleable.nodatalistview_minitem, 0); if (nodataimgint != 0) { nodatabitmap = bitmapfactory.decoderesource(getresources(), nodataimgint); } else { nodatabitmap = bitmap.createbitmap(1, 1, bitmap.config.argb_8888); } mpaint = new paint(); array.recycle(); } @override protected void onmeasure(int widthmeasurespec, int heightmeasurespec) { height = measurespec.getsize(heightmeasurespec); width = measurespec.getsize(widthmeasurespec); super.onmeasure(widthmeasurespec, heightmeasurespec); } @override protected void ondraw(canvas canvas) { adapter adapter = getadapter(); super.ondraw(canvas); if (adapter == null || adapter.getcount() <= minitem) { canvas.drawbitmap(nodatabitmap, width / 2 - nodatabitmap.getwidth() / 2, height / 2 - nodatabitmap.getheight() / 2, mpaint); } } }
属性声明:
<declare-styleable name="nodatalistview"> <!--最低item数--> <attr name="minitem" format="integer"/> <!--没有数据时,显示的图片资源--> <attr name="nodataimg" format="reference"/> </declare-styleable>
如何使用?
<com.tianjs.tianjinsuop2p.widgets.nodatalistview android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="#00000000" android:dividerheight="0dp" android:overscrollmode="never" android:scrollbars="none" app:minitem="0" app:nodataimg="@drawable/icon_wushuju"/>
其实就是在ondraw里面,检测到有几个item,如果adapter为null,或者adapter的count小于等于最小item数的话,就在背景显示没有数据的图片出来、
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
推荐阅读
-
Android listview数据显示及提示信息的实例
-
Android使用ListView实现下拉刷新及上拉显示更多的方法
-
android ListView内数据的动态添加与删除实例代码
-
Android ListView数据绑定显示的三种解决方法
-
Android listview数据显示及提示信息的实例
-
android ListView内数据的动态添加与删除实例代码
-
Android ListView数据绑定显示的三种解决方法
-
SQL数据库实例名称找不到或远程连接失败并显示错误error40的原因及解决办法
-
Android ListView数据的分批显示功能
-
关于echarts在节点显示动态数据及添加提示文本所遇到的问题