Я бы сказал, что лучше всего было бы создать внутренний класс anon из этого класса и добавить свою логику таймера с расширением GridView
:
class AdapterDataSetObserver extends DataSetObserver {
@Override
public void onChanged() {
}
@Override
public void onInvalidated() {
}
}
(Вы можете получить доступ к этой переменной-членупоскольку это не является приватным):
/**
* Should be used by subclasses to listen to changes in the dataset
*/
AdapterDataSetObserver mDataSetObserver;
Это метод, который вы должны переопределить (внутри gridview) (вам может потребоваться внести некоторые изменения, так как некоторые из этих переменных-членов могут быть приватными - mDataSetObserver
isоднако нет:
@Override
public void setAdapter(ListAdapter adapter) {
if (null != mAdapter) {
mAdapter.unregisterDataSetObserver(mDataSetObserver);
}
resetList();
mRecycler.clear();
mAdapter = adapter;
mOldSelectedPosition = INVALID_POSITION;
mOldSelectedRowId = INVALID_ROW_ID;
if (mAdapter != null) {
mOldItemCount = mItemCount;
mItemCount = mAdapter.getCount();
mDataChanged = true;
checkFocus();
mDataSetObserver = new AdapterDataSetObserver();
mAdapter.registerDataSetObserver(mDataSetObserver);
mRecycler.setViewTypeCount(mAdapter.getViewTypeCount());
int position;
if (mStackFromBottom) {
position = lookForSelectablePosition(mItemCount - 1, false);
} else {
position = lookForSelectablePosition(0, true);
}
setSelectedPositionInt(position);
setNextSelectedPositionInt(position);
checkSelectionChanged();
} else {
checkFocus();
// Nothing selected
checkSelectionChanged();
}
requestLayout();
}
Найдите эти две строки в методе выше и расширьте свой класс здесь:
mDataSetObserver = new AdapterDataSetObserver();
mAdapter.registerDataSetObserver(mDataSetObserver);