Android的ListView数据更新后,如何使最新的条目可以自动滚动到可视范围内?

在ListView的layout配置中添加 android:transcriptMode="alwaysScroll"

[html] view plaincopy
 
<ListView  
    android:id="@+id/listView"  
    android:layout_width="match_parent"  
    android:layout_height="wrap_content"  
    android:layout_alignParentLeft="true"  
    android:transcriptMode="alwaysScroll"  
</ListView>

  

或者在Java代码中执行

 

 

mListView = (ListView) view.findViewById(R.id.listview);  
        mListView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); 

 

当数据改变的时候,在回调函数中使用ListView.setSelection()方法来定位到最后一行

ChatAdapter adapter = new ChatAdapter(this);  
  
ListView lv = (ListView) findViewById(R.id.chatList);  
lv.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);  
lv.setAdapter(adapter);  
  
adapter.registerDataSetObserver(new DataSetObserver() {  
    @Override  
    public void onChanged() {  
        super.onChanged();  
        lv.setSelection(adapter.getCount() - 1);      
    }  
});  

 

posted @ 2015-08-10 22:12  米饭粒  阅读(145)  评论(0编辑  收藏  举报