`
djun100
  • 浏览: 179667 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

android中水平显示表格数据

 
阅读更多

今天工作任务提前完成了,就抽空更新一下博客,这篇博客以前我在其他论坛上发表过,今天有空就把它拉过来;制作表格一般来讲都是一条一条数据垂直显示,今天我们就将表格数据水平分布显示;下面请看效果图:

5163babe852c0

一、两种实现方法

1.通过list数据源在textview中进行横向赋值操作。

大家先看看布局文件:

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

    <TextView
        android:id="@+id/detail_project1_tv"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:text="项目"
        android:textSize="20sp"
        android:background="@drawable/textviewborder"
        android:gravity="center"
        android:textColor="@color/black" />

    <TextView
        android:id="@+id/detail_params1_tv"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:text="参数"
        android:textSize="20sp"
        android:background="@drawable/textviewborder"
        android:gravity="center"
        android:textColor="@color/black"  />

    <TextView
        android:id="@+id/detail_project2_tv"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:text="项目"
        android:textSize="20sp"
        android:background="@drawable/textviewborder"
        android:gravity="center"
        android:textColor="@color/black" />

    <TextView
        android:id="@+id/detail_params2_tv"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:text="参数"
        android:textSize="20sp"
        android:background="@drawable/textviewborder"
        android:gravity="center"
        android:textColor="@color/black" />

</LinearLayout>
给textview加上边框:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#00000000" />
<stroke android:width="2dip" android:color="#3B536E" />
</shape>

布局文件没什么多讲的,很简单,一目了然。

再看看adapter代码:

public class OrderMealDetailAdapter extends BaseAdapter {
    private LayoutInflater mInflater;
    public Context context;
    public List<NutrientContent> nutrientList = null;

    public OrderMealDetailAdapter(Context context) {
        this.context = context;
        this.mInflater = LayoutInflater.from(this.context);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        if (nutrientList != null)
            return nutrientList.size();
        else
            return 0;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        if (nutrientList != null)
            return nutrientList.get(position);
        else
            return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        if (nutrientList != null)
            return position;
        else
            return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        Holder holder = null;
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.ordermeal_detail_item,
                    null);
            holder = new Holder();
            holder.detail_project1_tv = (TextView) convertView
                    .findViewById(R.id.detail_project1_tv);
            holder.detail_params1_tv = (TextView) convertView
                    .findViewById(R.id.detail_params1_tv);
            holder.detail_project2_tv = (TextView) convertView
                    .findViewById(R.id.detail_project2_tv);
            holder.detail_params2_tv = (TextView) convertView
                    .findViewById(R.id.detail_params2_tv);
            convertView.setTag(holder);
        } else {
            holder = (Holder) convertView.getTag();
        }

//换行进行横向数据填充
        if (position % 2 == 0) {
            //填充一行中前两个元素
            holder.detail_project1_tv
                    .setText(nutrientList.get(position).project);
            holder.detail_params1_tv
                    .setText(nutrientList.get(position).element);
            holder.detail_project1_tv.setVisibility(View.VISIBLE);
            holder.detail_params1_tv.setVisibility(View.VISIBLE);
            //填充一行中后两个元素
            if (nutrientList.size() > position + 1) {
                holder.detail_project2_tv.setText(nutrientList
                        .get(position + 1).project);
                holder.detail_params2_tv
                        .setText(nutrientList.get(position + 1).element);
                holder.detail_project2_tv.setVisibility(View.VISIBLE);
                holder.detail_params2_tv.setVisibility(View.VISIBLE);
            } else {
                //没有可填充数据
                holder.detail_project2_tv.setText("");
                holder.detail_params2_tv.setText("");
            }
        } else {
            //把后一行的数据移到前一行来,后一行隐藏操作
            holder.detail_project1_tv.setVisibility(View.GONE);
            holder.detail_params1_tv.setVisibility(View.GONE);
            holder.detail_project2_tv.setVisibility(View.GONE);
            holder.detail_params2_tv.setVisibility(View.GONE);
        }
        return convertView;
    }

    class Holder {
        TextView detail_project1_tv; // 项目1
        TextView detail_params1_tv; // 参数1
        TextView detail_project2_tv;
        TextView detail_params2_tv;
    }

    // 退出
    public void exit() {
        nutrientList = null;
        notifyDataSetChanged();
        mInflater = null;
        context = null;
    }
 

看到注释大家都明白了吧,哈哈,有什么疑问大家可以留言;

PS:例子里面仅使用了表格水平排列2排的操作,如果大家有N排的操作,大家只需要修改布局文件添加NTextView,然后在getViewif(position%2==0)中做N次判断就ok了。

2.通过循环,迭代tablerow进行横向赋值。

1

转眼就到了下班的时间了,今天就讲到这里,谢谢大家。

转自:http://www.u3dblog.com/?p=315
分享到:
评论

相关推荐

    android 表格显示

    在Android开发中,展示数据的方式多种多样,其中“表格显示”是常见的数据组织形式,尤其在需要呈现结构化信息时非常实用。标题“android 表格显示”涉及到的是如何在Android应用中创建并操作表格视图,使得用户可以...

    Android中仿简单的Excel表格

    在Android开发中,创建一个类似Excel的表格控件可以极大地提升用户体验,特别是在处理大量数据时。这个项目"Android中仿简单的Excel表格"旨在实现一种功能,即固定表头行和左侧三列,使得用户在滚动时能保持关键信息...

    Android双向表格可滑动可双向适配

    在Android开发中,双向表格是一种常见的布局方式,它允许用户在水平和垂直方向上滚动数据,为用户提供更灵活的数据展示。本项目“Android双向表格可滑动可双向适配”着重于实现这样的功能,并在此基础上增加了自定义...

    android动态添加表格行_动态布局.zip

    在Android开发中,动态添加表格行是一个常见的需求,特别是在创建数据列表或者展示可变数据时。这个主题主要涉及Android的布局管理和控件操作。本文将深入探讨如何在Android应用中实现这一功能,主要包括以下几个...

    Android自定义DataGridView数据表格控件

    在Android开发中,由于原生SDK并没有提供类似.NET框架中的DataGridView控件,开发者往往需要自定义控件来实现数据表格的展示。这个自定义的`DataGridView`控件就是为了解决这个问题而创建的,它继承自`...

    Android高级应用源码-自定义表格自动刷新数据.rar

    在Android开发中,自定义表格和自动刷新数据是高级应用中的常见需求,特别是在构建数据密集型应用时。这个"Android高级应用源码-自定义表格自动刷新数据.rar"压缩包提供了一个实例,可以帮助开发者理解如何实现这样...

    Android高级应用源码-android动态添加表格行.zip

    在Android开发中,动态添加表格行是一个常见的需求,特别是在创建数据展示或者用户输入的界面时。这个"Android高级应用源码-android动态添加表格行.zip"压缩包提供了相关的示例代码,帮助开发者理解如何在Android...

    Android 自定义可上下左右滑动table

    标题"Android 自定义可上下左右滑动table"指向的就是一个专门为Android平台设计的定制化表格控件,它不仅支持垂直滚动(上下滑动),还支持水平滚动(左右滑动),这在处理大数据量或需要展示宽幅信息时非常有用。...

    android表格

    在Android开发中,创建和操作表格是一个常见的任务,特别是在构建数据密集型应用时。"android表格"这个主题主要关注如何在Android平台上实现交互式的表格视图。本篇将深入探讨如何实现表格点击事件以及手势翻页功能...

    Android自定义excel表格demo下载

    在Android开发中,创建自定义的Excel表格是一个常见的需求,特别是在数据导出或者数据分析的场景中。本示例"Android自定义excel表格demo"提供了一个解决方案,它不仅能够生成Excel表格,还支持用户左右滑动查看更多...

    Android-一个看起来像TableView的RecyclerView可以同时水平和垂直滚动一个固定的标题

    这个“Android-一个看起来像TableView的RecyclerView可以同时水平和垂直滚动一个固定的标题”的项目,显然是针对需要同时展示多维度数据的场景,比如表格数据。它通过自定义适配器和布局管理器,实现了类似TableView...

    Android实现仿excel数据表格效果

    `ListView` 用于显示表格中的行数据,它可以高效地处理大量数据,通过复用视图来提高性能。在本例中,`mListView` 被用来展示表格内容。 3. **ButterKnife**: `ButterKnife` 是一个依赖注入库,简化了在Android...

    android recyclerview 实现excel效果

    在本项目中,我们探讨如何使用RecyclerView实现类似Excel的效果,即一个可以进行上下左右滚动的表格视图。这个功能在展示大量数据时非常实用,比如在数据统计、报表展示等场景。 首先,我们需要理解RecyclerView的...

    Android复式折线表格水平滚动

    在Android开发中,有时我们需要展示复杂的数据,复式折线图是一种有效的可视化方式,它可以同时显示多组数据,便于对比和分析。本知识点主要聚焦于如何在Android中实现复式折线图,并支持水平滚动,尤其当Y轴右侧的...

    android自定义表格

    在Android开发中,自定义表格是一种常见的需求,特别是在展示复杂数据或者需要高度定制化界面时。本教程将深入探讨如何创建一个支持列合并、优化界面刷新、预留接口以及支持左右滚动的自定义表格。 首先,我们需要...

    Android 高仿58同城 表格展开效果 源码

    在Android开发中,有时我们需要创建类似58同城那样的交互式界面,其中包含了可展开的表格效果。本项目“Android 高仿58同城 表格展开效果 源码”正是针对这一需求提供的一种解决方案。它利用了Android的TableLayout...

    Android学习笔记13:表格布局管理器TableLayout

    4. `android:orientation`:虽然默认为垂直布局,但TableLayout也支持水平布局,不过在实际应用中较少使用。 5. `android:padding` 和 `android:paddingLeft`, `android:paddingTop`, `android:paddingRight`, `...

    android 课程表布局

    Adapter是Android中的一个重要概念,它负责将数据转换为列表项的视图。例如,你可以创建一个CourseAdapter,它继承自BaseAdapter,并重写其方法以填充课程数据到ListView或RecyclerView中。 此外,为了优化用户体验...

    Android双列滑动表格(双表头不动)

    在Android开发中,创建一个双列滑动表格(双表头不动)的组件是一个常见的需求,主要用于展示数据并保持头部分类固定以便用户更好地理解和浏览。这个功能在诸如电商应用、财务管理软件等场合尤为常见。本篇文章将...

    Android 表格布局实例应用

    在Android开发中,表格布局(TableLayout)是一种常用的布局方式,尤其在展示数据时非常实用。本实例将探讨如何在Android应用中运用表格布局,并通过实际的代码示例来展示其工作原理和实现方法。 首先,`...

Global site tag (gtag.js) - Google Analytics