北京邮电大学iptv,菜园坝汽车站时刻表,高考笑话
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 Manifest中meta-data扩展元素数据的配置与获取方式
Android实现获取meta-data和build.gradle的值
Android获取清单文件中的meta-data,解决碰到数值为null的问题
解决webview 第二次调用loadUrl页面不刷新的问题
解决Android WebView拦截url,视频播放加载失败的问题
Android webview加载https链接错误或无响应的解决
网友评论