使用CursorAdapter增加ListView的行数?

时间:2012-07-24 08:23:06

标签: android listview android-layout

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

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

问题是我希望第二个View在ListView中被视为两行。因此,Text1将成为一行,Text2将成为另一行。

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

1 个答案:

答案 0 :(得分:0)

  

有没有办法告诉ListView这里有两行   而不是一个或有没有办法伪造它?

您可以通过两种方式解决此问题。首先,您可以制作自己的自定义Adapter,在正确的行数中打破Cursor,然后使用TextView每行简单地使用一个OnItemClickListener。根据{{​​1}}数据的大小,这可能很容易或者需要避免。

第二种方法是使用您当前的自定义Cursor并实现两种类型的行(实现CursorAdaptergetViewTypeCount()方法),其中一种方法具有简单的getItemViewType()和一行有两个TextView。诀窍是你不能使用TextViews上的OnItemClickListener,而是要从行ListView上设置OnCLickListeners。如果使TextViews占据整行的宽度和高度,则效果将被选中。在那些TextViews的{​​{1}}中,您可以传递该行的OnClickListenerTextViews的当前位置,以执行您想要的任何操作。