Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在GridView刷新时接收来自它的通知?_Android_Gridview - Fatal编程技术网

Android 如何在GridView刷新时接收来自它的通知?

Android 如何在GridView刷新时接收来自它的通知?,android,gridview,Android,Gridview,GridView具有BaseAdapter派生类,负责填充其子级。它很好用 我想在刷新GridView时执行一些操作。换句话说,我希望有一个addOnRefreshListner方法 它需要适应低至8 Froyo的API级别。如果在自定义适配器中覆盖BaseAdapter.notifyDataSetChanged,该怎么办 @Override public void notifyDataSetChanged() { super.notifyDataSetChanged(); //

GridView具有BaseAdapter派生类,负责填充其子级。它很好用

我想在刷新GridView时执行一些操作。换句话说,我希望有一个addOnRefreshListner方法


它需要适应低至8 Froyo的API级别。

如果在自定义适配器中覆盖BaseAdapter.notifyDataSetChanged,该怎么办

@Override
public void notifyDataSetChanged() {
    super.notifyDataSetChanged();
    // A change has happened and caused the GridView to refresh
}
notifyDataSetChanged是缺少addOnRefreshListener的解决方案

尝试为API 11或更高版本实现View.OnLayoutChangeListener

View myView = findViewById(R.id.my_view);
myView.addOnLayoutChangedListener(new OnLayoutChangeListener() {

@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {

      // Do what you need to do with the height/width since they are now set
    }
});

很抱歉,我应该提到,我尝试了notifyDataSetChanged和notifyDataSetInvalidated,但从未调用它们。当您使用添加或设置DataSetObservable之类的方法更改数据时,需要调用它。有时,即使没有数据更改,GridView也会刷新。例如,当大小更改时可能会发生这种情况。这种更改为每个子级调用适配器的getView。我想在更新所有子项后收到通知。View.OnLayoutChangeListener似乎是正确的,但不幸的是,它适用于API 11或更高版本。您是否尝试过扩展GridView并重写invalidate?不,我没有。我试图在不扩展GridView的情况下离开。在我开始调查之前,我从未想过这会很困难。最初我认为可能有多种方法可供选择来实现这一点。类视图有各种类型的setOnXXXListener,但它们似乎都不能满足我的需要。很抱歉,我应该提到我需要适应API级别8及以上。我将编辑问题以添加此条件。