Android ListView scrollTo

0m4*_*m4r 3 android android-listview android-scroll

我有一个LinearLayout包含一些其他观点,其中一个ListView.通过单击按钮从另一个视图加载此视图.

此按钮以某种方式指定ListView中的哪个元素需要是列表中第一个可见的元素.填充列表的元素是通过HTTP从外部服务器检索的.

问题是我可以将第N个元素作为列表中的第一个元素.请注意,我不想将其从当前位置移动到新位置,我希望列表滚动.

我曾尝试与setSelected()scrollTo(x,y)scrollBy(x,y),但没有运气.

我也尝试过这个代码,虽然它很丑,但我只想尝试f它工作:

ListView categoryList = (ListView)findViewById(R.id.category_list);
        categoryList.post(new Runnable() {
            @Override
            public void run() {
                Log.d(this.getClass().getName(), "CategoryActivity.scrollToIndex: " + CategoryActivity.scrollToIndex);
                if(CategoryActivity.scrollToIndex>0){
                    ListView categoryList = (ListView)findViewById(R.id.category_list);
                    categoryList.setScrollContainer(true);
                    categoryList.scrollTo(4, CategoryActivity.scrollToIndex * 50);
                    categoryList.requestLayout();

                }
            }
        });
Run Code Online (Sandbox Code Playgroud)

这给了我一些成功,但ListView当时表现得很疯狂,我甚至无法描述......

任何的想法?

Mar*_*ues 5

尝试将其添加到消息队列中

categoryList.post(new Runnable() {
    public void run() {
        categoryList.scrollTo(4, CategoryActivity.scrollToIndex * 50);
    }
});
Run Code Online (Sandbox Code Playgroud)

它在ScrollView中适用于我(查看此答案).