Android具有脚本模式,允许在将新数据添加到适配器时自动将列表视图滚动到底部.
可以以某种方式反转,以便在列表顶部自动添加新项目("逆转录模式")
方法stackFromBottom似乎是正确的,但不会在输入更改时自动滚动.
有没有人有一些示例代码,其中列表不断添加总是插入顶部的东西?我在这里走在正确的轨道上吗?
更新
谢谢你的回答,这让我想得更多.其实.我想让新条目显示在顶部,但屏幕仍然显示用户正在查看的项目.用户应主动滚动到顶部以查看新项目.所以我觉得成绩单模式不是我想要的.
kco*_*ock 45
嗯,好吧,如果我要尝试这个,我会做类似以下的事情:
List items = new ArrayList();
//some fictitious objectList where we're populating data
for(Object obj : objectList) {
items.add(0, obj);
listAdapter.notifyDataSetChanged();
}
listView.post(new Runnable() {
@Override
public void run() {
listView.smoothScrollToPosition(0);
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定这会起作用,但似乎合乎逻辑.基本上,只需确保在列表的开头添加项目(位置0),刷新列表适配器,然后滚动到位置(0,0).
而不是这个:
items.add(edittext.getText().toString());
adapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
你应该尝试(适合我):
listview.post(new Runnable() {
@Override
public void run() {
items.add(0, edittext.getText().toString());
adapter.notifyDataSetChanged();
listview.smoothScrollToPosition(0);
}
});
Run Code Online (Sandbox Code Playgroud)
我花了几个小时试图完成同样的事情.从本质上讲,这就像一个聊天应用程序,用户向上滚动以查看列表顶部的旧消息.
问题是,您想要在顶部动态添加另外50或100条记录,但滚动应该从添加前置项目的位置开始连续.
当您执行操作时notifyDataSetChanged,ListView将自动将其自身定位在数据集中的第一个项目上,而不是位于插入新项目的位置之前的位置.
这使得它看起来像你的列表只跳了50或100条记录.我相信TranscriptMode设置为正常不是解决方案.列表视图需要作为普通列表视图运行,您需要以编程方式滚动到列表的底部以模拟TranscriptMode,因为它在"正常"下运行.
| 归档时间: |
|
| 查看次数: |
55260 次 |
| 最近记录: |