当前位置: 首页 > 面试题库 >

如何在Android中显示两列ListView?

谭卜鹰
2023-03-14
问题内容

我有一个Android应用程序,它显示一个网格视图,该网格视图显示:

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维数组的值(类似于ASP.Net中的GridView-作为数据源-)。

我想展示:

1 | 人1

2 | 人2

3 | 人3

4 | 人4

任何想法?


问题答案:

是否必须是网格视图?ListView可以工作吗?

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

首先,我以新名称将simple_list_item_2.xml复制到项目的res / layout目录中,并将android:mode =“
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>

请注意,我使用了“ left”和“ right”
android:gravity值来使左侧项目左对齐,而右侧项目右对齐。您的布局需要不同的重力值,另外还需要一些属性来控制我不需要的左侧项目的大小。

我的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
ctor参数是用于每个List行的View的ID,包含数据的游标,字符串数组,其中每个元素是游标中列的名称(以获取它们的顺序)以及相应的用于列表行中每个项目的视图的视图ID数组。



 类似资料:
  • 问题内容: 我有一个要在垂直约束的空间中放置的物品的清单: 由于我不希望列表的高度超过特定的高度,但是我可以自由地将其水平扩展,因此我想将列表分为几列,如下所示: 或者,或者(在我看来,顺序并不重要) css属性允许将列表分成几列,但只接受固定数量的列。我不知道我要拥有的项目数(可以从1增加到40以上),因此,如果我将列数设置为3,则任何包含6个以上项目的列表都将过高,并且如果只有4个项目,则只有

  • 问题内容: 使用以下HTML,将列表显示为两列的最简单方法是什么? 所需显示: 该解决方案必须能够在Internet Explorer上运行。 问题答案: 现代浏览器 利用css3列模块来支持您要寻找的内容。 CSS: 旧版浏览器 不幸的是,要获得IE支持,您将需要一个涉及JavaScript和dom操作的代码解决方案。这意味着,只要列表内容发生更改,您就需要执行将列表重新排序为列并重新打印的操作

  • 现在是我探索Android的时候了。我设计了一个用户界面,如下所示,问题是我对在第一帧中应该做什么感到困惑,以便获得9x9网格。实际上,我在核心java中开发的同样的东西,通过在每个单元格中放置81个JTextFields,使用for循环并在gridbag布局的帮助下,我让我的应用程序完美运行。但是在android中,我如何在xml中定义我的9x9单元格,以便它应该接受数字,并且输入的数字也应该被

  • 我正在做一个android项目(java),在这个项目中,我想使用webview来显示一个通过使用FileChooser从Phone的存储中选择的图像。在我的java代码中,我有 欢迎任何建议。

  • 问题内容: 如何在Android的通知栏中显示简单的通知?请帮助我提供最简单的解决方案。 问题答案: 我假设您是在Notificationbar中询问通知。如果是这样,请尝试以下代码,

  • 我已经做了很多方法来只显示Firebase数据库的用户名。但是我得到了空值。也许你可以帮助我解决这个问题。 这是我拥有的数据库。我的Firebase数据库。 然后这是显示用户名的活动显示用户名的活动 这是我创建的动画,以便您可以更轻松地理解它。动画动图 这是我的密码 第一个活动.Java LoginActivity.Java 注册活动.Java 用户.Java