0

我有一个水平的 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()as 0,1,2,...,7。如果我们滑动第ListView9 个元素的值为cursor.getPosition()0,第 10 个元素的值为 1,依此类推。因此,如果我们选择第一个节点,那么它将在列表视图中选择第一个和第 9 个节点。在滑动视图的情况下更新位置。此外,如果我们选择第 9 项,那么第 1 项也将被选中,因为第 1 和第 9 节点的 getPosition 相同,即 0。

有没有办法摆脱这种情况?

4

0 回答 0