Android 可横竖滑动的双向表格

前段时间做个项目,要用到一个横向滑动的表格,顺手百度了一下,看到一位哥们的思路挺不错(http://www.javaapk.com/source/4374.html),参考了一下其中的思路,进行了一定的封装和优化。

封装后还没进行过较为详细的测试,如果遇见有bug或者有优化的建议的话,可随时联系我。

其实整个横竖表格的原理实现,竖向的滑动的话,就是listview的滑动,横向的话,则在listview的item里面利用HorizontalScrollView实现横向滑动,然后加以控制,当某一个item里的HorizontalScrollView发生横向滑动的时候,就把所有的item里的HorizontalScrollView也滑动到对应的位置。

我把这个listview和标题行封装到了一个LinearLayout中,封装成了VHTableView。

先看一下怎么用

布局xml如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
   >

<com.demo.zj.vhtableview.VHTableView
    android:id="@+id/vht_table"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

</com.demo.zj.vhtableview.VHTableView>
</RelativeLayout>
布局文件很简单,就这个自定义的view。

接着在activity里的调用,也很简单

<span style="white-space:pre">	</span>VHTableView vht_table=(VHTableView)findViewById(R.id.vht_table);
<span style="white-space:pre">	</span>VHTableAdapter tableAdapter=new VHTableAdapter(this,titleData,contentData);//titleData,contentData这两个数据源自己设置..
        //vht_table.setFirstColumnIsMove(true);//设置第一列是否可移动,默认不可移动
        //vht_table.setShowTitle(false);//设置是否显示标题行,默认显示
        vht_table.setAdapter(tableAdapter);
里面的VHtableAdapter是实现了VHBaseAdapter接口的类,接着来看VHBaseAdapter接口

import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;


public interface VHBaseAdapter {

    //表格内容的行数,不包括标题行
    public int getContentRows() ;

    //列数
    public int getContentColumn();

    //标题的view,这里从0开始,这里要注意,一定要有view返回去,不能为null,每一行
    // 各列的宽度就等于标题行的列的宽度,且边框的话,自己在这里和下文的表格单元格view里面设置
    public View getTitleView(int columnPosition, ViewGroup parent);

    //表格正文的view,行和列都从0开始,宽度的话在载入的时候,默认会是以标题行各列的宽度,高度的话自适应
    public View getTableCellView(int contentRow, int contentColum, View view, ViewGroup parent);


    public Object getItem(int contentRow) ;

    //每一行被点击的时候的回调
    public void OnClickContentRowItem(int row, View convertView);
}
接下来看 VHTableView的具体实现,具体代码如下:




import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值