Android  listView 绘制表格实例详解

Android  listView 绘制表格

效果图:

二,创建步骤:

1,创建布局:

activity_main中的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:orientation="vertical"
  android:layout_margin="3dip"
  android:layout_width="match_parent"
  android:layout_height="match_parent" > 

   <View
    android:layout_width="match_parent"
    android:layout_height="1dip"
    android:background="#A7A5A5"/>
  <!--调用外部控件的布局list_item布局。--!>
  <include
    layout="@layout/list_item"
    android:id="@+id/table_title"/> 

  <View
    android:layout_width="match_parent"
    android:layout_height="1.5dip"
    android:background="#686867"/> 

  <ListView
    android:id="@+id/list"
    android:divider="#B4B3B3"
    android:dividerHeight="1.0dip"
    android:scrollbars="none"
    android:background="@drawable/listview_bg"
    android:cacheColorHint="@android:color/transparent"
    android:fadingEdge="none"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
  </ListView> 

</LinearLayout>

2,创建list_item布局:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content" > 

  <TextView
    android:id="@+id/text_id"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center"
    android:paddingBottom="10dip"
    android:paddingTop="10dip"
    android:textColor="#000000"
    android:textSize="15sp"
    android:singleLine="true"
    android:text="序号" /> 

  <View
    android:layout_width="1.5dip"
    android:layout_height="fill_parent"
    android:background="#B4B3B3"/> 

  <TextView
    android:id="@+id/text_goods_name"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="3"
    android:paddingBottom="10dip"
    android:paddingTop="10dip"
    android:textColor="#000000"
    android:textSize="15sp"
    android:singleLine="true"
    android:gravity="center"
    android:text="商品名称" /> 

   <View
    android:layout_width="1.5dip"
    android:layout_height="fill_parent"
    android:background="#B4B3B3"/> 

   <TextView
    android:id="@+id/text_codeBar"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="2"
    android:paddingBottom="10dip"
    android:textColor="#000000"
    android:paddingTop="10dip"
    android:singleLine="true"
    android:textSize="15sp"
    android:gravity="center"
    android:text="条形码" /> 

   <View
    android:layout_width="1.5dip"
    android:layout_height="fill_parent"
    android:background="#B4B3B3"/> 

   <TextView
    android:id="@+id/text_num"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:paddingBottom="10dip"
    android:paddingTop="10dip"
    android:textColor="#000000"
    android:singleLine="true"
    android:textSize="15sp"
    android:gravity="center"
    android:text="数量" /> 

   <View
    android:layout_width="1.5dip"
    android:layout_height="fill_parent"
    android:background="#B4B3B3"/> 

   <TextView
    android:id="@+id/text_curPrice"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1.5"
    android:paddingBottom="10dip"
    android:textColor="#000000"
    android:textSize="15sp"
    android:singleLine="true"
    android:paddingTop="10dip"
    android:gravity="center"
    android:text="现价" /> 

   <View
    android:layout_width="1.5dip"
    android:layout_height="fill_parent"
    android:background="#B4B3B3"/> 

   <TextView
    android:id="@+id/text_money"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1.5"
    android:paddingBottom="10dip"
    android:singleLine="true"
    android:textSize="15sp"
    android:textColor="#000000"
    android:paddingTop="10dip"
    android:gravity="center"
    android:text="金额" /> 

</LinearLayout>

3,适配器中内容:

TableAdapter:

package com.example.listviewtable; 

import java.util.List; 

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView; 

public class TableAdapter extends BaseAdapter { 

  private List<Goods> list;
  private LayoutInflater inflater; 

  public TableAdapter(Context context, List<Goods> list){
    this.list = list;
    inflater = LayoutInflater.from(context);
  } 

  @Override
  public int getCount() {
    int ret = 0;
    if(list!=null){
      ret = list.size();
    }
    return ret;
  } 

  @Override
  public Object getItem(int position) {
    return list.get(position);
  } 

  @Override
  public long getItemId(int position) {
    return position;
  } 

  @Override
  public View getView(int position, View convertView, ViewGroup parent) { 

    Goods goods = (Goods) this.getItem(position); 

    ViewHolder viewHolder; 

    if(convertView == null){ 

      viewHolder = new ViewHolder(); 

      convertView = inflater.inflate(R.layout.list_item, null);
      viewHolder.goodId = (TextView) convertView.findViewById(R.id.text_id);
      viewHolder.goodName = (TextView) convertView.findViewById(R.id.text_goods_name);
      viewHolder.goodCodeBar = (TextView) convertView.findViewById(R.id.text_codeBar);
      viewHolder.goodNum = (TextView) convertView.findViewById(R.id.text_num);
      viewHolder.goodCurrPrice = (TextView) convertView.findViewById(R.id.text_curPrice);
      viewHolder.goodMoney = (TextView) convertView.findViewById(R.id.text_money); 

      convertView.setTag(viewHolder);
    }else{
      viewHolder = (ViewHolder) convertView.getTag();
    } 

    viewHolder.goodId.setText(goods.getId());
    viewHolder.goodId.setTextSize(13);
    viewHolder.goodName.setText(goods.getGoodsName());
    viewHolder.goodName.setTextSize(13);
    viewHolder.goodCodeBar.setText(goods.getCodeBar());
    viewHolder.goodCodeBar.setTextSize(13);
    viewHolder.goodNum.setText(goods.getNum()+"");
    viewHolder.goodNum.setTextSize(13);
    viewHolder.goodCurrPrice.setText(goods.getCurPrice()+"");
    viewHolder.goodCurrPrice.setTextSize(13);
    viewHolder.goodMoney.setText(goods.getMoney()+"");
    viewHolder.goodMoney.setTextSize(13); 

    return convertView;
  } 

  public static class ViewHolder{
    public TextView goodId;
    public TextView goodName;
    public TextView goodCodeBar;
    public TextView goodNum;
    public TextView goodCurrPrice;
    public TextView goodMoney;
  } 

}

4,Activity中内容:

package com.example.listviewtable; 

import java.util.ArrayList;
import java.util.List; 

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.ListView; 

public class ListTableActivity extends Activity { 

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); 

    //设置表格标题的背景颜色
    ViewGroup tableTitle = (ViewGroup) findViewById(R.id.table_title);
    tableTitle.setBackgroundColor(Color.rgb(177, 173, 172)); 

    List<Goods> list = new ArrayList<Goods>();
    list.add(new Goods("01", "伊利婴儿加盖奶粉110ml", "982323423232",34,23,23));
    list.add(new Goods("02", "鱼翅", "31312323223",34,23,23));
    list.add(new Goods("03", "农夫山泉", "12",34,23,23));
    list.add(new Goods("04", "飞天茅台0", "12333435445",34,23,23));
    list.add(new Goods("05", "农家小菜", "34523",34,23,23));
    list.add(new Goods("06", "飞天消费菜", "345456",34,23,23));
    list.add(new Goods("07", "旺仔小牛奶", "2344",34,23,23));
    list.add(new Goods("08", "旺旺", "23445",34,23,23));
    list.add(new Goods("09", "达利园超时牛奶", "3234345",34,23,23)); 

    ListView tableListView = (ListView) findViewById(R.id.list); 

    TableAdapter adapter = new TableAdapter(this, list); 

    tableListView.setAdapter(adapter);
  } 

}

5,实体类:

商品信息内容:

package com.example.listviewtable; 

public class Goods {
  private String id;
  private String goodsName;
  private String codeBar;
  private float num;
  private float curPrice;
  private float money; 

  public Goods() {
    super();
  } 

  public Goods(String id, String goodsName, String codeBar, float num,
      float curPrice, float money) {
    super();
    this.id = id;
    this.goodsName = goodsName;
    this.codeBar = codeBar;
    this.num = num;
    this.curPrice = curPrice;
    this.money = money;
  } 

  public String getId() {
    return id;
  } 

  public void setId(String id) {
    this.id = id;
  } 

  public String getGoodsName() {
    return goodsName;
  } 

  public void setGoodsName(String goodsName) {
    this.goodsName = goodsName;
  } 

  public String getCodeBar() {
    return codeBar;
  } 

  public void setCodeBar(String codeBar) {
    this.codeBar = codeBar;
  } 

  public float getNum() {
    return num;
  } 

  public void setNum(float num) {
    this.num = num;
  } 

  public float getCurPrice() {
    return curPrice;
  } 

  public void setCurPrice(float curPrice) {
    this.curPrice = curPrice;
  } 

  public float getMoney() {
    return money;
  } 

  public void setMoney(float money) {
    this.money = money;
  } 

}

DEMO地址:http://xiazai.jb51.net/201701/yuanma/ListViewTable-master(jb51.net).rar

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

(0)

相关推荐

  • Android中使用ListView绘制自定义表格技巧分享

    先上一下可以实现的效果图  要实现的效果有几方面 1.列不固定:可以根据数据源的不同生成不同的列数 2.表格内容可以根据数据源的定义合并列 3.要填写的单元格可以选择自定义键盘还是系统键盘 奔着这三点,做了个简单的实现,把源码贴一下(因为该点是主界面中的一部分,不便于放整个Demo) 自定义适配器,CallBackInterface是自定义的回调接口,这里定义回调是因为数据输入时需要及时保存 复制代码 代码如下: public class SiteDetailViewAdapter extend

  • Android自定义DataGridView数据表格控件

    我是一个.net程序员,但是苦于公司要求开发一个android app,没办法,只能硬着头皮上了. 由于项目里面很多地方需要用到数据显示控件(类似于.net的DataGridView),度娘找了下发现没人公开类似的控件,没办法只好自己写了. 废话不多说,直接贴代码: public class DataGridView extends HorizontalScrollView { private List<DataGridViewColumn> columns; private List<

  • Android自定义View实现仿GitHub的提交活跃表格

    说明 本文可能需要一些基础知识点,如Canvas,Paint,Path,Rect等类的基本使用,建议不熟悉的同学可以学习GcsSloop安卓自定义View教程目录,会帮助很大. 上图就是github的提交表格,直观来看可以分为几个部分进行绘制: (1)各个月份的小方格子,并且色彩根据提交次数变化,由浅到深 (2)右下边的颜色标志,我们右对齐就可以了 (3)左边的星期,原图是从周日画到周六,我们从周一画到周日 (4)上面的月份,我们只画出1-12月 (5)点击时候弹出当天的提交情况,由一个小三角和

  • Android提高之ListView实现自适应表格的方法

    前面有文章介绍了使用GridView实现表格的方法,本文就来说说如何用ListView实现自适应的表格.GridView比ListView更容易实现自适应的表格,但是GridView每个格单元的大小固定,而ListView实现的表格可以自定义每个格单元的大小,但因此实现自适应表格也会复杂些(主要由于格单元大小不一).此外,GridView实现的表格可以定位在具体某个格单元,而ListView实现的表格则只能定位在表格行.因此还是那句老话:根据具体的使用环境而选择GridView 或者 ListV

  • Android中使用ListView实现漂亮的表格效果

    在这里我们要使用Android ListView来实现显示股票行情,效果图如下,红色表示股票价格上涨,绿色表示股票价格下跌. 第一步.定义color.xml如下: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <resources>     <color name="color_dark_grey">#808080</color>     <

  • Android应用中通过Layout_weight属性用ListView实现表格

    今天主要说的是对Layout_weight属性的完全解析,以及利用Layout_weight这个属性使用ListView来实现表格的效果,我们都知道Android里面专门有一个TableLayout来实现表格的,说实话,我平常开发中用TableLayout还是比较少的,几乎没有用到,我们完全可以用LinearLayout和RelativeLayout来代替TableLayout的使用,自己开发中主要使用LinearLayout,RelativeLayout这两种布局,不过刚开始我还是偏爱于Rel

  • android表格效果之ListView隔行变色实现代码

    首先继承SimpleAdapter 复制代码 代码如下: package meetweb.net.util; import java.util.List; import java.util.Map; import android.content.Context; import android.graphics.Color; import android.view.View; import android.view.ViewGroup; import android.widget.SimpleAd

  • Android自定义View实现课程表表格

    自己闲下来时间写的一个课表控件,使用的自定义LinearLayout,里面View都是用代码实现的,最终效果如下图,写的可能有问题希望多多指点 创建一个自定义LinearLayout 控件用来装载课程的信息和课程的周数,和节数大概的布局三这样的 根据上面的看来觉得总体布局我分了两个 上面的星期是一个 下面的节数和格子是一个  总体使用Vertical  而单独内部者使用了Horizontal布局  中间使用了两种布局线条 是这样的 /** * 横的分界线 * * @return */ priva

  • Android listView 绘制表格实例详解

    Android  listView 绘制表格 效果图: 二,创建步骤: 1,创建布局: activity_main中的布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:

  • Android  listView 绘制表格实例详解

    Android  listView 绘制表格 效果图: 二,创建步骤: 1,创建布局: activity_main中的布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:

  • Android ListView 滚动条的设置详解及实例代码

    Android ListView 滚动条的设置详解 1.滚动条的属性 android:scrollbarAlwaysDrawHorizontalTrack 设置是否始终显示水平滚动条.这里用ScrollView.ListView测试均没有效果. android:scrollbarAlwaysDrawVerticalTrack 设置是否始终显示垂直滚动条.这里用ScrollView.ListView测试均没有效果. android:scrollbarDefaultDelayBeforeFade 设

  • Android的搜索框架实例详解

    基础知识 Android的搜索框架将代您管理的搜索对话框,您不需要自己去开发一个搜索框,不需要担心要把搜索框放什么位置,也不需要担心搜索框影响您当前的界面.所有的这些工作都由SearchManager类来为您处理(以下简称"搜索管理器"),它管理的Android搜索对话框的整个生命周期,并执行您的应用程序将发送的搜索请求,返回相应的搜索关键字. 当用户执行一个搜索,搜索管理器将使用一个专门的Intent把搜索查询的关键字传给您在配置文件中配置的处理搜索结果的Activity.从本质上讲

  • Android PhotoView使用步骤实例详解

    Android PhotoView使用步骤实例详解 1.步骤一:在布局文件中的代码: <uk.co.senab.photoview.PhotoView android:id="@+id/img_showimgview" android:layout_width="match_parent" android:layout_height="match_parent" /> 2.步骤二:进行找到控件的id photoview = (Phot

  • Android 帧动画的实例详解

    Android 帧动画的实例详解 对于 Android 帧动画 大体上可以理解成 一张张图片 按一定顺序切换, 这样当连续几张图是一组动画时,就可以连起来了看成是一个小电影,你懂得 好得,比就装到这里,下面开始进入正题,由于产品需求 需要做一个 声音喇叭动态切换的样式,我特么第一就想到是帧动画切换,然后就百度了一些资料,发现 真的, 现在这个网上太多的资料是 copy粘贴过来的, 一错全错,对于这种情况我只想说,made,一群垃圾, 所以今天我将带你们走进Android 正确帧动画地址. 第一步

  • Android Intent封装的实例详解

    Android Intent封装的实例详解 什么是Intent: Intent是协调应用间.组件之间的通讯和交互.通过Intent你可以启动Activity.Service.Broadcasts.更可以跨程序调用第三方组件.例如:启动拨打电话界面.音乐播放等. 组件     启动 Activity startActicity() Service startService(),bindService( ) Broadcasts sendBroadcast() 使用Intent: 栗子:在一个Act

  • Android 完全退出的实例详解

    Android 完全退出的实例详解 首先,在基类BaseActivity里,注册RxBus监听: public class BaseActivity extends AppCompatActivity { Subscription mSubscription; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Utils.intiSySBar(thi

  • Android 中ContentProvider的实例详解

    Android 中ContentProvider的实例详解 Content Provider 的简单介绍: * Android中的Content Provider 机制可支持在多个应用中存储和读取数据.这也是跨应用 共享数据的唯一方式.在Android系统中,没有一个公共的内存区域,供多个应用共享存储数据: * Android 提供了一些主要数据类型的ContentProvider ,比如:音频.视频.图片和私人通讯录等: 在android.provider 包下面找到一些android提供的C

  • Android 中 ActivityLifecycleCallbacks的实例详解

    Android 中 ActivityLifecycleCallbacks的实例详解           以上就是使用ActivityLifecycleCallbacks的实例,代码注释写的很清楚大家可以参考下, MyApplication如下: package com.cc; import java.util.LinkedList; import android.app.Activity; import android.app.Application; import android.os.Bun

随机推荐