在TableLayout中设置TableRow的列

时间:2014-11-18 00:57:55

标签: android gridview data-binding android-tablelayout

基本上我从数据库获取数据,我想在任何其他lenguaje上的一种“DataGridView”中调整这些数据,基本上我在Main布局中有一个GridView定义如下:

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gastoGridView"
    android:stretchMode="columnWidth"
    android:cacheColorHint="#00000000"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:numColumns="1"
    android:clipChildren="true"
    android:horizontalSpacing="5dip"
    android:verticalSpacing="5dip" />

另一方面我有第二个xml布局文件,而不是为这个gridView定义每个项目(行),这是我的item_gridview xml文件:

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

    <TableRow android:id="@+id/TableRow01"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:orientation="horizontal">

            <TextView  android:text="@string/hello"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/fechaAtt"
                android:gravity="left"
                android:layout_gravity="left" />

            <TextView  android:text="@string/hello"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/descpAtt"
                android:gravity="center_horizontal"
                android:layout_gravity="center_horizontal" />

        <TextView  android:text="@string/hello"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/saldoAtt"
            android:layout_gravity="right" />

    </TableRow>
</TableLayout>

好的,基本上我从数据库中获得了3个属性,我已经开发了适配器到这个gridview,所以我显示了它的信息,但不是我想要的方式,我会试着解释你,目前它是像这样展示

|     Date    |        Description        |      Price     |
 2014-11-17 any description it have 50.85$

我正在尝试将我的tablerow(width:fill_parent)划分为3个部分(列)我不确定是否可能,因为我不是很喜欢这个主题,但是我想把这个问题分开那3个部分,我想在行的左侧有一个小部分,这将是我的日期,在center_horizo​​ntal的一个大部分将是我的描述,另一个左边的部分将是我的价格,我不确定是否你们明白我的观点,但我想要这样的话。

|    Date       |          Description               |      Price      |
  2014-11-17      Get the description Centered Here        50.85$

我尝试在每个TextView上使用layout_span和layout_column,但是我得到一个Null Pointer错误,我不明白,也许我是以错误的方式这样做。

你们可以帮助我获得这种风格吗?我一直在阅读它,它有点困难,因为Android不像其他语言那样支持DataGridView工具。

事先谢谢你,我真的需要它

1 个答案:

答案 0 :(得分:1)

你的困难源于你试图将你的DataGridView概念带入Android的事实,这是有问题的。您真正想要做的是使用ListView AdapterLoader(如果可能,请使用Loader)。

现在,如果ListView发生了什么,它会为ViewCursor返回的每一行创建Adapter来创建(充气)此视图并填充它(捆绑)。这很有用,因为您现在可以将每一行视为一组三个项目并将它们恰当地排列出来。我建议您只使用常规LinearLayout并为您的布局设置相应的layout_weight。您必须记住将LinearLayout设置为水平。

编辑:

澄清。使用LinearLayout,您可以在layout.xml文件中指定android:layout_weight参数。这允许您设置“亲戚”。尺寸(宽度或高度取决于水平或垂直LinearLayout)。执行此操作后,android:layout_width将被忽略,但您应将其设置为0dp。一个例子:

<LinearLayout
    android:id="@+id/row_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
>
    <TextView
        android:id="@+id/date"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
    />
    <TextView
        android:id="@+id/description"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
    />
    <TextView
        android:id="@+id/price"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
    />
</LinearLayout>

现在,水平TextView中有三个LinearLayout,权重设置为1。这将使它们大小相同。您可以调整权重值以更改彼此的相对大小和父宽度。