Отражение - плохая идея.
Направьте этот gist . Существует метод, который выполняет выбор, но также вызывает обратный вызов:
@CallSuper
public void setSelectedItem(int position) {
if (position >= getMenu().size() || position < 0) return;
View menuItemView = getMenuItemView(position);
if (menuItemView == null) return;
MenuItemImpl itemData = ((MenuView.ItemView) menuItemView).getItemData();
itemData.setChecked(true);
boolean previousHapticFeedbackEnabled = menuItemView.isHapticFeedbackEnabled();
menuItemView.setSoundEffectsEnabled(false);
menuItemView.setHapticFeedbackEnabled(false); //avoid hearing click sounds, disable haptic and restore settings later of that view
menuItemView.performClick();
menuItemView.setHapticFeedbackEnabled(previousHapticFeedbackEnabled);
menuItemView.setSoundEffectsEnabled(true);
mLastSelection = position;
}
Этот пример выше работает с Mongoose 2.x, с Mongoose 3.x, используйте этот синтаксис:
Group
.find({})
.populate('Members', '_id name', null, { sort: { 'created_at': -1 } })
Вы также можете неявно указывать только необходимые параметры заполнения:
Group
.find({})
.populate({path: 'Members', options: { sort: { 'created_at': -1 } } })
Посмотрите на http://mongoosejs.com/docs/api.html#document_Document-populate
Это работало корректно для меня в версиях Mongoose 5 и выше.
Clinics.findById(req.params.id).populate({path:'users',options:{ sort:{date : 1}}}).exec(callback);
Следующее работало для меня в Mongoose v5.0.5:
Schedule.find({})
.populate({path: 'eventComments', options: {sort:{"commentDate": "descending"}}})
.exec(function(err, result) {
if (err) {
throw err
}
else {
return res.json(result);
}
});
P.S. Ключевое различие между этим примером и примером Kitten заключается в том, что commentDate находится в кавычках, тогда как Date (в примере Kitten) нет. Это может потребоваться для некоторых из вас. Надеюсь это поможет.
И для Mongoose 4.x используйте этот синтаксис:
Kitten.find().populate({
path: 'owner'
, select: 'name'
, match: { color: 'black' }
, options: { sort: { name: -1 }}
}).exec(function (err, kittens) {
console.log(kittens[0].owner.name) // Zoopa
})
// alternatively
Kitten.find().populate('owner', 'name', null, {sort: { name: -1 }}).exec(function (err, kittens) {
console.log(kittens[0].owner.name) // Zoopa
})
Ссылка: Mongoose docs