带有按钮的滚动列表视图

5

我想通过按按钮来滚动我的listview。我正在使用两个按钮:向上和向下。当我按向上按钮时,listview应该向上移动一行;当我按向下按钮时,listview应该向下移动一行。

我的listview基于这个链接。我在这里找到了一个好的scrollview示例。现在我的问题是,我需要使用我的listview而不是scrollview,并且它应该增加/减少一行。由于我是android新手,请有人帮忙解决这个问题。提前致谢。


请查看此链接:ANDROID为ListView提供了默认的滚动条。 - sarabu
3
永远不要将ListView嵌套在ScrollView中!! - Skynet
我不需要在ScrollView中使用ListView。我的需求就像那个例子,我需要通过点击按钮使我的ListView上下移动。 - AndroidOptimist
因此,可以使用一行简单的代码来实现:list.setSelection(position); 其中position是一个int参数。 - Skynet
请查看此链接:https://www.youtube.com/watch?v=wDBM6wVEO70 - Skynet
显示剩余2条评论
3个回答

3
你可以尝试以下其中一种方法:
如果要进行直接滚动:
getListView().setSelection(int);

实现平滑滚动:

getListView().smoothScrollToPosition(int);

示例代码:

public View.OnClickListener onChk = new View.OnClickListener() {
             public void onClick(View v) {

                 int index = list.getFirstVisiblePosition();
                 getListView().smoothScrollToPosition(index+1); // For increment. 

}
});

然而,你需要处理一种情况,即如果顶部只有一半或部分视图可见。


我需要通过点击按钮来滚动。例如,按上按钮应该向上滚动一行,依此类推...我的问题清楚吗? - AndroidOptimist
2
是的,在按钮点击监听器中放置上述代码片段。就这样!您需要增加和减少一个变量,该变量将进入int位置,这个增加和减少应该在按钮点击时发生。 - Skynet
抱歉回复晚了。我将您上面的代码放在按钮中,如下:btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { listView.setSelection(8); } }); 但它没有起作用。 - AndroidOptimist
@user2734849 要考虑一下你的ListView大小是否为10,而ListView每次只显示6个项目。在进行了4次初始的setSelection之后,它将停止滚动,因为ListView始终显示6个项目,并且已经选择了该项目,但ListView不会滚动。如果您想要在不选择项目的情况下滚动,请获取每个项目的高度并使用ScrollTO或ScrollBy方法。 - bala

2
你有没有检查过IDE的建议?;)
ListView lv = (ListView) findViewById(R.id.myListView);

// to scroll to a given position
lv.scrollTo(int x, int y);

// to scroll by a given number of dp
lv.scrollBy(int x, int y);

每个项目的高度都相同吗?它们的高度是手动设置还是手动计算的? - meeDamian
我需要通过点击按钮来滚动视图。通常情况下,我现在可以滚动列表视图。 - AndroidOptimist

0

平滑滚动持续时间

getListView().smoothScrollToPositionFromTop(position,offset,duration);

参数 position -> 要滚动到的位置

offset ----> 滚动完成后,位置距视图顶部的期望像素距离

duration-> 滚动所需的毫秒数

注意:从API 11开始。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接