相关疑难解决方法(0)

Android ListView setSelection()似乎不起作用

我有一个ListActivity实现onListItemClick()并调用doSomething()该类的函数.后者包含l.setSelection(position)其中lListView对象.

现在有onClickListener()一个按钮点击,它会执行一些操作并且也会调用doSomething().

在第一种情况下,所选项目适当定位,但在后者中,没有任何反应.

有关这种奇怪行为的任何线索以及我如何使其发挥作用?

android listview

65
推荐指数
6
解决办法
8万
查看次数

以编程方式在ListView中设置位置而不滚动

这适用于运行Android 4.4.2的平板电脑.我有一个包含数百个项目的ListView,一次可见约20个.用户不希望平滑滚动的动画.如何在不使用smoothScrollToPosition()的情况下以编程方式设置Listview中的显示位置?

我搜索了Stack Overflow,在Android ListView中,setSelection()似乎没有用,他们建议:

mListView.clearFocus();
mListView.post(new Runnable() {
    @Override
    public void run() {
        mListView.setSelection(index);
    }
});
Run Code Online (Sandbox Code Playgroud)

...但它只是设定选择; 它没有将ListView的那部分带入视图. setSelection()似乎是整个网络上流行的解决方案,但我在文档中找不到任何说setSelection()也设置位置的东西,它只设置选择而不改变我的位置.

不使用smoothScrollToPosition转到Listview中的项目时,他们提出了Romain Guy的解决方案......

[myListView.post(new Runnable() 
{
    @Override
    public void run() 
    {
        myListView.setSelection(pos);
        View v = myListView.getChildAt(pos);
        if (v != null) 
        {
            v.requestFocus();
        }
    }
});] 
Run Code Online (Sandbox Code Playgroud)

这个问题是我的ListView是通过自定义适配器的getView()管理的ListActivity的一部分,因此不可见的视图被回收,即,如果我请求一个不在屏幕上的视图的子视图返回null.无论如何,它确实是我试图控制的ListView,所以通过子视图间接地做它似乎非常间接.

如何告诉ListView我想在屏幕上看到哪一部分?

android listview android-listview

0
推荐指数
1
解决办法
2452
查看次数

标签 统计

android ×2

listview ×2

android-listview ×1