当前位置: 移动技术网 > IT编程>移动开发>Android > Android listview数据显示及提示信息的实例

Android listview数据显示及提示信息的实例

2019年07月24日  | 移动技术网IT编程  | 我要评论

北京邮电大学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数的话,就在背景显示没有数据的图片出来、

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网