Android 设置ListView当前显示的item

项目中可能会有这种需求:动态设置ListView显示的itemide

这种需求可能会出如今不一样的状况下,有的是打开页面就要显示在特定的位置,也有的是浏览列表时实时更新数据而且改变了集合中数据,或者是某种条件触发而改变显示的位置,我遇到的就是第二种。post

先说说个人状况:资源

用ListView展现数据,当上拉或下拉刷新时会增长集合中数据的数量,可是考虑若是item太多可能会太占资源,因而我就控制了一下集合的长度,每次刷新后若是size超过最大值时我就会从集合中移除一部分数据,可是当我在刷新adapter时问题就出现了,ListView显示的item直接跳到了顶部或底部,而不是接着刷新以前的位置显示,缘由我没有具体研究,多是由于每次调用adapter的刷新时adapter都记住position,刷新后会继续从记住的position开始展现,但我移除了一部分,从而致使显示的位置错乱。get

 

其实解决办法很简单,网上有不少人都碰到了这个问题而且给出了解决办法:it

若是上拉或下拉时,从集合中移除了一部分数据,那么在刷新以前调用下面的方法就能够解决问题io

listview.postDelayed(new Runnable() {
     @Override
     public void run() {List

  //上拉时,setSelection(获取当前展现的第一个item的position  减掉你从集合中移除的数据的数量(a)),这样在刷新时就会继续以前的位置显示
      listview.setSelection(listview.getFirstVisiblePosition()
        - a + 1);
     }方法

  //下拉时,setSelection(你从集合中移除的数据的数量(a))数据

  listview.setSelection(a);
    }, 20);项目

相关文章
相关标签/搜索