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编程开发之在Canvas中利用Path绘制基本图形(圆形,矩形,椭圆,三角形等)

    本文实例讲述了Android编程开发之在Canvas中利用Path绘制基本图形的方法.分享给大家供大家参考,具体如下: 在Android中绘制基本的集合图形,本程序就是自定义一个View组件,程序重写该View组件的onDraw(Canvase)方法,然后在该Canvas上绘制大量的基本的集合图形. 直接上代码: 1.自定义的View组件代码: package com.infy.configuration; import android.content.Context; import andro

  • Android编程绘制圆形图片的方法

    本文实例讲述了Android编程绘制圆形图片的方法.分享给大家供大家参考,具体如下: 效果图如下: 第一步:新建RoundView自定义控件继承View package com.rong.activity; import com.rong.test.R; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.grap

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

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

  • Android开发 OpenGL ES绘制3D 图形实例详解

    OpenGL ES是 OpenGL三维图形API 的子集,针对手机.PDA和游戏主机等嵌入式设备而设计. Ophone目前支持OpenGL ES 1.0 ,OpenGL ES 1.0 是以 OpenGL 1.3 规范为基础的,OpenGL ES 1.1 是以 OpenGL 1.5 规范为基础的.本文主要介绍利用OpenGL ES绘制图形方面的基本步骤. 本文内容由三部分构成.首先通过EGL获得OpenGL ES的编程接口;其次介绍构建3D程序的基本概念;最后是一个应用程序示例. OpenGL E

  • Android开发中使用achartengine绘制各种图表的方法

    本文实例讲述了Android开发中使用achartengine绘制各种图表的方法.分享给大家供大家参考,具体如下: 1. ABarChart.java package com.anjoyo.achartengine; import java.util.Random; import org.achartengine.ChartFactory; import org.achartengine.chart.BarChart.Type; import org.achartengine.model.Cat

  • Android QQ登录界面绘制代码

    先看看效果图: 首先过程中碰到的几个问题: 1.对 EditText 进行自定义背景 2.运行时自动 EditText 自动获得焦点 3.在获得焦点时即清空 hint ,而不是输入后清空 4.清空按钮的出现时机(在得到焦点并且有输入内容时) ---  这些问题都有一一解决 --- 以下是代码: 布局 fragment_main(问题2) <!-- android:focusable="true" android:focusableInTouchMode="true&qu

  • Android开发笔记之:在ImageView上绘制圆环的实现方法

    绘制圆环其实很简单,有大概以下三种思路. 这里先说网上提到的一种方法.思路是先绘制内圆,然后绘制圆环(圆环的宽度就是paint设置的paint.setStrokeWidth的宽度),最后绘制外圆.请看核心源码: 复制代码 代码如下: <SPAN xmlns="http://www.w3.org/1999/xhtml">package yan.guoqi.rectphoto;import android.content.Context;import android.graph

  • Android自定义View之继承TextView绘制背景

    本文实例为大家分享了TextView绘制背景的方法,供大家参考,具体内容如下 效果: 实现流程: 1.初始化:对画笔进行设置 mPaintIn = new Paint(); mPaintIn.setAntiAlias(true); mPaintIn.setDither(true); mPaintIn.setStyle(Paint.Style.FILL); mPaintIn.setColor(getResources().getColor(R.color.colorPrimary)); mPain

  • Android中使用achartengine生成图表的具体方法

    今天在做项目的时候用到了图表功能,记录下来 achartengine是google的一个开源项目,可以在https://code.google.com/p/achartengine/ 下载技术文档,jar包以及项目源代码 demo下载:https://code.google.com/p/achartengine/downloads/list 一.饼状图 新建工程,添加achartengine  jar包 PieChart.java 复制代码 代码如下: package com.meritit.f

  • Android百度地图实现搜索和定位及自定义图标绘制并点击时弹出泡泡

    一.问题描述 上一次我们使用百度地图实现基本的定位功能,接下来我们继续实现搜索和定位,并使用LocationOverlay绘制定位位置,同时展示如何使用自定义图标绘制并点击时弹出泡泡 如图所示: 二.编写MyApplication类 public class MyApplication extends Application { private static MyApplication mInstance = null; public boolean m_bKeyRight = true; pu

  • 解决Android SurfaceView绘制触摸轨迹闪烁问题的方法

    本文分享了解决SurfaceView触摸轨迹闪烁问题的方法,供大家参考,具体内容如下 第一种解决SurfaceView触摸轨迹闪烁问题的方法: 由于SurfaceView使用双缓存机制,两张画布轮流显示到屏幕上.那么,要存储触摸轨迹并避免两张画布内容不一致造成的闪烁问题,完全可以利用保存绘制过程并不断重新绘制的方法解决闪烁,而且这样还顺带解决了多次试验中偶尔出现的因为moveTo()函数不能读取到参数执行默认设置(参数设为上次的触摸点)而出现的断线连接闪烁问题,详细代码如下: package c

随机推荐