欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-04 10:42:46
android  listview数据显示及提示信息的实例 最近我们测试人员说,我们的所有的列表都要做一个没有数据就提示没有数据,当时我的表情是这样的 =_=!...

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

最近我们测试人员说,我们的所有的列表都要做一个没有数据就提示没有数据,当时我的表情是这样的 =_=!!! 我的天呐……这么多列表真的要一个一个做嘛!!!然后我想了一下,那就直接改造listview吧……说干就干。

没有数据的效果:

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

有数据的效果:

Android  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数的话,就在背景显示没有数据的图片出来、

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