Android 获取listview项的可见位置
我有一个自定义游标适配器来填充片段中的列表视图Android 获取listview项的可见位置,android,Android,我有一个自定义游标适配器来填充片段中的列表视图 我想设置列表视图项中某些元素的可见性,具体取决于该项是否为列表中第一个可见项。是否可以在游标适配器的bindView()方法中获取该信息?适配器的用途计划: 创建视图 向它们附加数据 返回ListView要使用的视图 结论:适配器不知道它创建的视图将显示在哪里 但是,ListView确实知道这一点,而且这可能是您实现此功能的唯一方法 开始使用的示例代码: listView.setOnScrollListener(new AbsListView.On
我想设置列表视图项中某些元素的可见性,具体取决于该项是否为列表中第一个可见项。是否可以在游标适配器的
bindView()
方法中获取该信息?适配器的用途计划:
ListView
确实知道这一点,而且这可能是您实现此功能的唯一方法
开始使用的示例代码:
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
int previousFirst = -1;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (previousFirst != firstVisibleItem) {
previousFirst = firstVisibleItem;
TextView textView = (TextView) view.findViewById(R.id.title);
if (textView != null) textView.setText("First: " + firstVisibleItem);
}
}
});
此代码的问题:
- 第一项更改后,需要将其文本设置回上一项
- 视图层次结构也是如此。如果您更改此视图的外观,在它不再是第一个视图之后,您需要将其更改回来
- ListView在创建时不会滚动。因此,在手动滚动之前,第一项不会更改文本
祝你好运 您指的是什么项目?@Siva我指的是listview项目。游标适配器.list项生成的项通过数据库中的游标动态显示。在这种情况下,您可以检查检索项,并在本地进行比较,以查看哪个项是first@Siva这基本上是我的问题,谢谢。这是一个很好的答案。我以前只实现过一次,就像你说的那样,它非常混乱。现在,我选择在
bindView()
中使用cursor.moveToPrevious()
来获取前一行,然后相应地操作当前行的视图。这仍然没有给我第一个可见的行,但我可以接受它。