Вам следует взглянуть на метод setOnDrawerOpenListener
.
Создайте свой собственный OnDrawerOpenListener
и используйте его, чтобы проверить, что данные нулевые -если это так, закройте ящик снова:
private class OnDrawerOpened implements OnDrawerOpenListener {
@Override
public void onDrawerOpened() {
if( data == null )
mySlidingDrawer.close();
}
}
Вам понадобится ссылка на ваш SlidingDrawer
, и вам потребуется OnDrawerOpened
, чтобы быть внутренним классом, чтобы вы могли получить доступ к ссылке на ваш SlidingDrawer
.
Альтернатива
Вы также можете создать свой собственный подкласс, расширив SlidingDrawer
, а затем переопределив методы animateOpen()
и open()
(вам может понадобитьсяпереопределить animateToggle()
и toggle()
тоже):
public class MySlidingDrawer extends SlidingDrawer {
public MySlidingDrawer( Context context, AttributeSet attrs ) {
super( context, attrs );
}
@Override
public void animateOpen() {
if( data != null )
super.animateOpen();
else
//Show dialog
}
@Override
public void open() {
if( data != null )
super.open();
else
//Show dialog
}
}
Если вы сделаете это, вам нужно будет сослаться на собственную реализацию SlidingDrawer
в вашем XML:
<com.myPackage.MySlidingDrawer>
...
</com.myPackage.MySlidingDrawer>
В зависимости от того, как и когда вы получаете данные для проверки на нулевое значение, вы можете либо передать их в MySlidingDrawer
в своем конструкторе, либо добавить метод, с помощью которого вы можете установить данные.