用setSelection只能定位前十条,因为一更新数据最先显示前十条,而后面的在滑动过程中重绘,请问如何保证在任意行数下更新数据位置能不变。由于分数不足,希望大家谅解,请求保证帮帮忙。谢谢了

解决方案 »

  1.   

    listview.post(new Runnable() {    @Override
        public void run() {
            mAdapter.addData(messages);//addData()内部调用notifyDataSetChanged()更新数据
            listview.smoothScrollToPosition(yourPosition);
        }
    });可以吗?
      

  2.   

    如果你用的是Recycleview的话,取到当前位置的position,刷新当前item。就可以了。
      

  3.   

    记录: 
    mList.setOnScrollListener(new AbsListView.OnScrollListener() {
                @Override
                public void onScrollStateChanged(AbsListView view, int scrollState) {
                   
                    if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
                        mListFocus = mList.getFirstVisiblePosition();
                        View item = mList.getChildAt(0);
                        firstVisiblePositionTop = (item == null) ? 0 : item.getTop();
                    }            }            @Override
                public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {            }
            });
    设置:
    mList.setSelectionFromTop(mListFocus, firstVisiblePositionTop);