Android 当ListView在附加ArrayAdapter后完成渲染时,如何获取回调?

Android 当ListView在附加ArrayAdapter后完成渲染时,如何获取回调?,android,listview,android-arrayadapter,Android,Listview,Android Arrayadapter,我基本上是用ArrayAdapter填充ListView lv,并且我只需要在渲染后编程lv.smoothScrollToPositioni;否则,它将不起作用。我正在侦听的事件是onWindowFocusChangedboolean hasFocus,用于将适配器设置为listview 如何捕捉滚动lv的最佳时机?尝试在getView方法中判断位置 public@NonNull View getViewint位置,@null-View-convertView, @非空视图组父项{这可以使用Ar

我基本上是用ArrayAdapter填充ListView lv,并且我只需要在渲染后编程lv.smoothScrollToPositioni;否则,它将不起作用。我正在侦听的事件是onWindowFocusChangedboolean hasFocus,用于将适配器设置为listview


如何捕捉滚动lv的最佳时机?

尝试在getView方法中判断位置

public@NonNull View getViewint位置,@null-View-convertView,
@非空视图组父项{

这可以使用ArrayAdapter中的重写函数getView来完成。您可以检查位置是否等于列表中的项数

@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
    }
}

希望对您有所帮助

我认为您可以根据自己的情况解决问题。在调用notifyDataSetChanged或将适配器设置为listview后,使用Handler,您可以使用:

final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
      @Override
      public void run() {
        //Do something after 200ms
        lv.smoothScrollToPosition(i);
      }
    }, 200);

请发布完整的答案。在这里,它的迭代次数只匹配我事先不知道的呈现项目的数量,而不是列表的大小。我用这个答案补充了解决方案,并且