0

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

一种视图类型包含一个 TextView,称为 TextView1。
第二个视图包含 TextView1 和 TextView2。

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

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

4

1 回答 1

0

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

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

第二种方法是使用您当前的自定义CursorAdapter并实现两种类型的行(实现getViewTypeCount()getItemViewType()方法),一种是简单TextView的,一种是带有两个的TextViews。诀窍是您不能使用OnItemClickListeneron the ListView,而是将您的 on 设置OnCLickListenersTextViewsfrom the rows 上。如果您使TextViews占据整行的宽度和高度,则效果将是被选中的行。在OnClickListenerfor 中,TextViews您可以传递 theCursoridfor 该行的当前位置来做任何您想做的事情。

于 2012-07-24T09:07:53.520 回答