安卓 ListView实现表格分割线效果

ListView实现表格分割线效果,效果如下:

1.主函数代码:

package com.example.qd.douyinwu;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.ViewGroup;
import android.widget.ListView;

import com.example.qd.douyinwu.adapter.TableAdapter;
import com.example.qd.douyinwu.bean.Goods;

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

/**
 * https://github.com/zqHero/ListViewTable
 * listView实现表格效果
 */
public class ListViewActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_listview);
        //设置表格标题的背景颜色
        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);
    }
}

2.布局activity_listview:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="3dip"
    android:orientation="vertical">
    <!--调用外部控件的布局list_item布局。-->
    <View
        android:layout_width="match_parent"
        android:layout_height="1dip"
        android:background="#A7A5A5" />

    <include
        android:id="@+id/table_title"
        layout="@layout/list_item" />

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

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

</LinearLayout>

3.适配器和布局TableAdapter:

package com.example.qd.douyinwu.adapter;

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;

import com.example.qd.douyinwu.R;
import com.example.qd.douyinwu.bean.Goods;


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;
    }

}

 list_item.xml:

<?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="1dip"
        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="1dip"
        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="1dip"
        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="1dip"
        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="1dip"
        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>

实体类Goods.class:

package com.example.qd.douyinwu.bean;

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;
    }

}

4.绘制直角边框背景shape_line_gray.xml:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:right="0dp">
        <shape android:shape="rectangle" >
            <solid android:color="#B4B3B3" />
        </shape>
    </item>
    <item android:right="1dp" android:top="1dp" android:left="1dp" android:bottom="1dp">
        <shape android:shape="rectangle" >
            <solid android:color="@color/white" />
        </shape>
    </item>

</layer-list>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值