我有一个水平ListView,它以文件夹的形式显示一些项目。单击这些项可打开该节点的子项。我想设置所选节点的背景。我可以在Adapter类中使用此代码执行此操作:
public void bindView(View view, Context context, Cursor cursor) {
this.cursorPosition = cursor.getPosition();
if (this.cursorPosition == selectedPosition) {
holder.title.setBackgroundResource(R.color.toc_selected);
}
}
此处selectedPosition
是所选项目的位置,我将其设置在不同的位置。
如果在单击项目后向左/向右滑动项目,此代码将失败。在ListView
显示8个项目时,cursor.getPosition()
的值为0,1,2,...,7
。如果我们滑动ListView
,第9个元素的值cursor.getPosition()
将为0,元素10th的值为1,依此类推。因此,如果我们选择第一个节点,那么它将在列表视图中选择第1个节点和第9个节点。在滑动视图的情况下更新位置。此外,如果我们选择第9项,那么第1项也将被选中,因为第1和第9个节点的getPosition是相同的,即0。
有没有办法摆脱这种情况?