【问题标题】:Increase Row Count of ListView with CursorAdapter?使用 CursorAdapter 增加 ListView 的行数?
【发布时间】:2012-07-24 08:23:06
【问题描述】:

我正在使用由自定义 CursorAdapter 填充的 ListView,它根据特定行的 Cursor 中的数据值返回两个不同的视图。

一个View类型包含一个TextView,称之为TextView1。
第二个View包含TextView1和TextView2。

问题是我希望将第二个视图视为 ListView 中的两行。所以 Text1 会变成一行,Text2 会变成另一行。

显然,使用 Layouts 我可以让它看起来像是不同的行,但实际上并不是不同的行。我不能独立选择它们,所以当我连接到 ListView 的 OnListItemClick 事件时,我得到一个用于单击 TextView1 和 TextView2 的事件,它们并不明显。有没有办法告诉 ListView 这里有两行而不是一个,或者有办法伪造它吗?

【问题讨论】:

  • 使用CursorAdapter 一个光标条目是一行,我想没有其他方法可以做到这一点。您始终可以编写 ArrayAdapter 甚至 BaseAdapter 的自定义扩展

标签: android listview android-layout


【解决方案1】:

有没有办法告诉 ListView 这里有两行 没有,或者有办法伪造吗?

您可以通过两种方式解决此问题。首先,您可以创建自己的自定义Adapter,以正确的行数打破Cursor,然后简单地在每行使用一个TextViewOnItemClickListener。根据Cursor 数据的大小,这可能很容易或可以避免。

第二种方法是使用您当前的自定义CursorAdapter 并实现两种类型的行(实现getViewTypeCount()getItemViewType() 方法),一种具有简单的TextView,一种具有两个TextViews .诀窍是您不能在ListView 上使用OnItemClickListener,而是在行中的TextViews 上设置OnCLickListeners。如果您使TextViews 占据整个行的宽度和高度,则效果将是选中的行。在那些TextViewsOnClickListener 中,您可以传递Cursor 的当前位置或该行的id 来做任何你想做的事情。

【讨论】:

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