下午好,
我有一个显示项目列表的列表视图......虽然不是全部,但它们都在那里。而不是让用户向上/向下滚动,而是要求和向上/向下按钮。除了如何推进 ListView 之外,我的一切都处理得很好。假设我正在查看列表中的第 3 项。用户点击下一步...我想 ListView 前进到第 4 项。我在内部跟踪他们在哪个页面上进行递增/递减。我期待找到这样的东西,但没有骰子。
ListView.MoveNext();
或者
ListView.Move(int);
根据 Brayden 的建议,我在这里尝试了接受的解决方案:返回 ListView 时保持/保存/恢复滚动位置,并且它没有出现滚动列表....即它停留在第一个列表项上。我也试过setSelection。
这是我的代码:
public void btn_NextClick(View vw_Current)
{
//increment page count 1
i_PageTracker ++;
//advance to next record
//int x = lstvw_LiftData.getFirstVisiblePosition();
View v = lstvw_LiftData.getChildAt(0);
int top = (v == null) ? 0 : v.getTop();
lstvw_LiftData.setSelectionFromTop(i_PageTracker, top);
//lstvw_LiftData.setSelection(i_PageTracker);
}
基于弗拉基米尔的成功和我的缺乏,我想提供一些我认为无关紧要的额外信息,但......
我扩展了 SimpleAedapter 并覆盖了 getView。我还有一个 DataBinder 可以用数据对象中的某些数据填充 TextViews。
有趣的是,当我在 DataAdapter 的 getView 和加载时绑定器的 setViewValue 中设置断点时,我们会适当地点击它们。但是,当单击下一个按钮时,我们不会点击它们,如果列表前进到下一个位置,我会期望它们....嗯,我想知道....我有另一个想法....马上回来。
我想通了....但我不知道该怎么办。看到不知道我在做什么,我自己开枪了。我只想一次在列表中看到一个项目,并且我不希望用户能够滚动。好吧,我所做的就是覆盖 DataAdapter 中的 getCount 并返回 1。这似乎是答案,因为只有一项显示很酷!但是覆盖 getCount 也意味着只有一项要显示,所以我们永远不会前进……没有什么可以前进的。
所以我想知道的是这个。如何防止用户滚动并强制他们使用导航按钮。我是否处理滚动事件并返回 null?