blob: 8fe354980dc0891dcfacffe3a87eea9b6011df96 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
package cgeo.geocaching.apps.cachelist;
import android.content.Context;
import android.support.v4.view.ActionProvider;
import android.support.v4.view.MenuItemCompat;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.SubMenu;
import android.view.View;
import java.util.List;
public class ListNavigationSelectionActionProvider extends ActionProvider {
public static interface Callback {
void onListNavigationSelected(final CacheListApp app);
}
private Callback callback;
public ListNavigationSelectionActionProvider(final Context context) {
super(context);
}
@Override
public boolean hasSubMenu() {
return true;
}
@Override
public View onCreateActionView() {
// must return null, otherwise the menu will not work
return null;
}
public void setCallback(final Callback callback) {
this.callback = callback;
}
@Override
public void onPrepareSubMenu(final SubMenu subMenu) {
subMenu.clear();
if (callback == null) {
return;
}
final List<CacheListApp> activeApps = CacheListApps.getActiveApps();
for (int i = 0; i < activeApps.size(); i++) {
final CacheListApp app = activeApps.get(i);
subMenu.add(Menu.NONE, i, Menu.NONE, app.getName()).setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(final MenuItem item) {
final CacheListApp app = activeApps.get(item.getItemId());
callback.onListNavigationSelected(app);
return true;
}
});
}
}
public static void initialize(final MenuItem menuItem, final Callback callback) {
final ActionProvider actionProvider = MenuItemCompat.getActionProvider(menuItem);
if (actionProvider instanceof ListNavigationSelectionActionProvider) {
final ListNavigationSelectionActionProvider navigateAction = (ListNavigationSelectionActionProvider) actionProvider;
navigateAction.setCallback(callback);
}
}
}
|