【问题标题】:How to create customized grid view with two textview如何使用两个文本视图创建自定义网格视图
【发布时间】:2012-11-09 06:16:19
【问题描述】:

如何使用两个 textview 自定义网格视图的单元格,因为我想在每个单元格中显示 2 个标签。

在我的任务中,我正在寻找作为表格的网格视图,它在每个单元格中包含两个不同的值。我已经为此尝试了自定义网格视图,如下所示。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<Button android:id="@+id/selectBtn"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:text="Select" android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:minWidth="200px" />
<GridView android:id="@+id/PhoneGrid"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:numColumns="auto_fit" android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp" android:columnWidth="90dp"
    android:stretchMode="columnWidth" android:gravity="center"
    android:layout_above="@id/selectBtn" />
</RelativeLayout>

自定义布局是,..

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<TextView android:id="@+id/Name" android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:layout_centerInParent="true" />
<TextView android:id="@+id/Number" android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:layout_alignParentRight="true"
    android:layout_alignParentTop="true" />
</RelativeLayout>

在此我需要在单个 Gridview 中显示姓名和电话号码..

帮我找到解决方案..

提前致谢..

【问题讨论】:

  • 你想问什么?你的意思是如何设置它们?您需要为此编写一个自定义适配器。

标签: android gridview


【解决方案1】:

您希望创建一个扩展 BaseAdapterAdapter 类,以在代码中传递到 GridView。您需要做的所有事情都已经在您需要覆盖的方法中为您准备好了。 Android 有一个不错的tutorial,应该可以帮助您入门。如果您需要帮助了解每个部分的作用,请在此处查看。有很多人经历过你现在正在经历的同样的事情,所以资源充足:)

干杯。

【讨论】:

  • 我正在使用数据库。我可以将此适配器用于多个或 n 个数据吗??
  • 是的。 CursorAdapter 有一个名为 swapCursor 的方法,您可以将其与 CursorLoader 结合使用。你需要让你的类实现LoaderManager.LoaderCallbacks&lt;Cursor&gt;。您将获得一些方法来覆盖,您可以使用它们来让它们一起工作。对 CursorLoaders 做一些研究。我在这里的一些问题实际上已经在这个主题上得到了回答,所以我知道你会得到一些好东西。
  • 你能解释一下这个概念吗……安迪
  • 当然。您需要的是 2 个类:您的主 Activity 或您用来运行它的任何东西,一个您需要创建的自定义 CursorAdapter。但是您使用 GridView 运行布局的 Activity(或 Fragment)必须实现 LoaderManager.LoaderCallbacks&lt;Cursor&gt; 这带来了一些方便的方法,允许您使用空适配器设置 GridView,并在后台查询数据库,并为您的 GridView 提供光标完成后。您的适配器将处理您创建后告诉它的所有内容。
  • @ShaftShankar(顺便说一句有趣的名字),这是我关于此事的一个问题的链接:stackoverflow.com/questions/11150527/… 希望它对任何人都有帮助,因为它确实帮助我了解了整个过程是如何运作的。
【解决方案2】:

你可以点击这个链接,可以替换imageview的地方,你可以使用Text,你需要什么..

Cusom GridView

谢谢

【讨论】:

  • 这是一个很好的教程,但如果您使用数据库,BaseAdapter 将不起作用。您可以做一些额外的工作并解析查询后返回的光标,然后将信息发送到BaseAdapter 自定义类,但是当CursorAdapter 为您完成这一切时,为什么要复杂化呢。同时,如果使用 CursorAdapter,则需要确保在后台进行查询。 CursorLoader 会自动为您执行此操作。请记住,它只对查询执行此操作,而不是更新、删除、插入等。
  • 查看我在答案@ShaftShankar 上发布的链接,但如果仍然没有帮助,请告诉我,我会在 github 上为你们创建示例代码。
【解决方案3】:

我只是使用了多行处理的字符串作为“\n”..

就像你可以像下面这样替换字符串

String header=first_String_Variable+"\n"+second_String_Variable;

并使用适配器设置网格..

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, header);
gridHeader.setAdapter(adapter);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多