如何滚动ListView到位置
How to scroll ListView to position
我有 20 item.i 使用 scrollTo(0,getListViewHeight(listView,5)) 滚动位置 5.
显示 5 到 11 时出错。我不希望显示 5 结束。怎么办?
http://i.stack.imgur.com/pMulJ.png
我调用 adapter.notifyDataSetChanged(); 没有动作。
如何显示从位置 5 到结尾的项目。
代码:
@InjectView(R.id.list_item)
ListView listView;
String[] values = new String[]{"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20",
"21",
"22"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_demo_scroll_by_load_adapter);
ButterKnife.inject(this,
this);
final ArrayAdapter adapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1,
values);
listView.setAdapter(adapter);
listView.scrollTo(0,
getListViewHeight(listView,
5));
// adapter.clear();
// adapter.addAll(values);
// listView.requestLayout();
}
private int getListViewHeight(ListView list,
int position) {
int listviewHeight = 0;
list.measure(View.MeasureSpec.makeMeasureSpec(View.MeasureSpec.UNSPECIFIED,
View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED));
listviewHeight = list.getMeasuredHeight() * position + (position * list.getDividerHeight());
return listviewHeight;
}
编辑
使用这个:
listView.post(new Runnable() {
@Override public void run() {
listView.smoothScrollToPositionFromTop(5, 0, 1);
}
});
我有 20 item.i 使用 scrollTo(0,getListViewHeight(listView,5)) 滚动位置 5.
显示 5 到 11 时出错。我不希望显示 5 结束。怎么办? http://i.stack.imgur.com/pMulJ.png
我调用 adapter.notifyDataSetChanged(); 没有动作。 如何显示从位置 5 到结尾的项目。
代码:
@InjectView(R.id.list_item)
ListView listView;
String[] values = new String[]{"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20",
"21",
"22"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_demo_scroll_by_load_adapter);
ButterKnife.inject(this,
this);
final ArrayAdapter adapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1,
values);
listView.setAdapter(adapter);
listView.scrollTo(0,
getListViewHeight(listView,
5));
// adapter.clear();
// adapter.addAll(values);
// listView.requestLayout();
}
private int getListViewHeight(ListView list,
int position) {
int listviewHeight = 0;
list.measure(View.MeasureSpec.makeMeasureSpec(View.MeasureSpec.UNSPECIFIED,
View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED));
listviewHeight = list.getMeasuredHeight() * position + (position * list.getDividerHeight());
return listviewHeight;
}
编辑
使用这个:
listView.post(new Runnable() {
@Override public void run() {
listView.smoothScrollToPositionFromTop(5, 0, 1);
}
});