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