我正在使用由自定义CursorAdapter填充的ListView,它根据该特定行的Cursor中的数据值返回两个不同的视图。
One View类型包含TextView,称之为TextView1 第二个视图包含TextView1和TextView2。
问题是我希望第二个View在ListView中被视为两行。因此,Text1将成为一行,Text2将成为另一行。
显然,对于Layouts,我可以让它看起来像是一个不同的行,但它实际上并不是一个不同的行。我无法独立选择它们,所以当我挂钩ListView的OnListItemClick事件时,我得到一个单击TextView1和TextView2的事件,它们并不是截然不同的。有没有办法告诉ListView这里有两行而不是一行或有没有办法伪造它?
答案 0 :(得分:0)
有没有办法告诉ListView这里有两行 而不是一个或有没有办法伪造它?
您可以通过两种方式解决此问题。首先,您可以制作自己的自定义Adapter
,在正确的行数中打破Cursor
,然后使用TextView
每行简单地使用一个OnItemClickListener
。根据{{1}}数据的大小,这可能很容易或者需要避免。
第二种方法是使用您当前的自定义Cursor
并实现两种类型的行(实现CursorAdapter
和getViewTypeCount()
方法),其中一种方法具有简单的getItemViewType()
和一行有两个TextView
。诀窍是你不能使用TextViews
上的OnItemClickListener
,而是要从行ListView
上设置OnCLickListeners
。如果使TextViews
占据整行的宽度和高度,则效果将被选中。在那些TextViews
的{{1}}中,您可以传递该行的OnClickListener
或TextViews
的当前位置,以执行您想要的任何操作。