我基本上使用ListView lv
填充ArrayAdapter
,我需要在呈现之后以编程方式lv.smoothScrollToPosition(i)
填充;否则,它将无法正常工作。我正在收听的事件是onWindowFocusChanged(boolean hasFocus)
将适配器设置为列表视图。
如何才能抓住滚动lv
的最佳时刻?
答案 0 :(得分:1)
我认为你可以为你的情况而努力。使用Handler,在调用notifyDataSetChanged或将适配器设置为listview后,您可以使用:
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Do something after 200ms
lv.smoothScrollToPosition(i);
}
}, 200);
答案 1 :(得分:0)
尝试在getView方法中判断位置;
public @NonNull查看getView(int position,@ Narlable View convertView, @NonNull ViewGroup parent){
答案 2 :(得分:0)
可以使用getView
中的覆盖功能ArrayAdapter
来完成此操作。您可以检查位置是否等于列表中项目的编号。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
...
...
...
if(position == yourList.size() - 1) {
//do your work
//it's better to make interface handle this call inside your Activity
}
}
希望有所帮助