如何在ListView连接ArrayAdapter后完成渲染时获得回调?

时间:2017-03-28 03:39:40

标签: android listview android-arrayadapter

我基本上使用ListView lv填充ArrayAdapter,我需要在呈现之后以编程方式lv.smoothScrollToPosition(i)填充;否则,它将无法正常工作。我正在收听的事件是onWindowFocusChanged(boolean hasFocus)将适配器设置为列表视图。

如何才能抓住滚动lv的最佳时刻?

3 个答案:

答案 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
    }
}

希望有所帮助