我有一个机器人应用程序,显示,显示一个网格视图:

1

2

3

4

GridView gridview=(GridView)findViewById(R.id.GridView_test);
DataBaseHelper dbhelper=new DataBaseHelper(this);
ArrayList<String> test=new ArrayList<String>(5);
backlinksadapter.add("1");
backlinksadapter.add("2");
backlinksadapter.add("3");
backlinksadapter.add("4");
ArrayAdapter mAdapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, test);
gridview.setAdapter(mAdapter);

通过此刻正工作的,但我想显示网格的线的foreach,2列与2维数组的值(像在GridView在ASP.Net - 作为数据源 - )。

我想显示:

1 |人1

2 |人2

3 |人3

4 |人4

任何想法?

有帮助吗?

解决方案

它必须是一个网格视图?将一个ListView工作?

我写了一个ListView和ListActivity显示每行中的两个项目。我开始与SDK提供simple_list_item_2.xml布局,列出两个项目每行但使用较小的字体,第二行放在其他(两条线)之上之一。我想要的是在同一条线上两个项目,一个在右边,一个在左边。

首先,我复制了simple_list_item_2.xml到我的项目的res /布局目录下创建一个新的名称和更改属性的android:模式=“twoLine”到“ONELINE”,同时仍保持视图元素的名称为“TwoLineListItem”。然后我更换了两个内部因素与那些做了我想要的东西。

在代码初始化列表,我创建一个MatrixCursor并与所期望的数据填充它。为了支持两个项目,在MatrixCursor每行需要三列,一个是主键,“_id”,而另外两列是,我想显示的项目。我然后能够使用SimpleCursorAdapter填写和控制的ListView。

我的布局XML文件:

 <?xml version="1.0" encoding="utf-8"?>
  <TwoLineListItem
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:paddingTop="2dip"
     android:paddingBottom="2dip"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:mode="oneLine"
  >
<TextView
    android:id="@android:id/text1"
    android:gravity="left"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="6dip"
    android:layout_marginTop="6dip"
    android:textAppearance="?android:attr/textAppearanceLarge"
/>
<TextView
    android:id="@android:id/text2"
    android:gravity="right"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="6dip"
    android:layout_marginTop="6dip"
    android:layout_marginRight="6dip"
    android:layout_toRightOf="@android:id/text1"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="@color/MainFontColor"
/>
</TwoLineListItem>

请注意,我使用的“左”和“右”机器人:重力的值,使左边项左对齐和右侧项目右对齐。您将需要不同的重力值,你的布局,再加上你需要的属性来控制我不需要左侧项目的大小。

在我的ListActivity类的方法,该初始化的ListView:

private void initListView()
{
    final String   AuthorName    = "Author: ";
    final String   CopyrightName = "CopyRight: ";
    final String   PriceName     = "Price: ";

    final String[] matrix  = { "_id", "name", "value" };
    final String[] columns = { "name", "value" };
    final int[]    layouts = { android.R.id.text1, android.R.id.text2 };

    MatrixCursor  cursor = new MatrixCursor(matrix);

    DecimalFormat formatter = new DecimalFormat("##,##0.00");

    cursor.addRow(new Object[] { key++, AuthorName, mAuthor });
    cursor.addRow(new Object[] { key++, CopyrightName, mCopyright });
    cursor.addRow(new Object[] { key++, PriceName,
            "$" + formatter.format(mPrice) });

    SimpleCursorAdapter data =
        new SimpleCursorAdapter(this,
                R.layout.viewlist_two_items,
                cursor,
                columns,
                layouts);

    setListAdapter( data );

}   // end of initListView()

到MatrixCursor构造函数的参数是定义的顺序,并在光标列的名称的字符串的数组。重要提示:请务必添加“_id”一栏,没有它MatrixColumn将抛出一个异常而无法正常工作

在三个变量,mAuthor,mCopyright和mPrice,在我ListAdaptor类三个数据成员和它们在别处初始化。在我实际的代码,mAuthor实际上是建立在这种方法中,从作者的名单。作者姓名连接成使用“\ n”作为名称之间的分隔符的单一字符串。这使得多个作者姓名出现在相同的TextView不同的线路。

在SimpleCursorAdapter构造函数的参数是查看用于每个列表行的ID,包含该数据,一个字符串数组,其中每个元素是从光标的列的名称光标(在为了得到它们)和查看ID的用于查看的对应阵列以用于列表行中的每一项。

其他提示

如果你不能找到现有的适配器具有这些属性,你可以创建自己的自定义适配器,并把它映射到你的观点。

您好,GridView的教程显示了如何执行此

JRL是正确的,你应该写自己的自定义适配器,它可以让你控制什么将每一行中显示。您可能会发现的帮助。更高级的实施例可以发现这里http://developerlife.com/tutorials/?p=327

如果您不希望/你必须使用一个列表TableLayout可以显示你的数据,以及。但是,这将是手动的方法,因为你必须填写每一个细胞。

最佳的成功。

为什么不创建一个类,其toString()返回str(id) + " | " + personName,并把它作为一个模板类,而不是String对象?

您只需在您的XML添加此    机器人:numColumns列= “2”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top