Bonjour à tous.

Je suis débutant sur Android, et je suis en train de developper une application avec une base de donnée.

Je bloque sur un problème depuis un bon moment, je vous explique.

Mon activité présente une liste "expandable". Je cherche à récupérer le click pour deux choses:

-le clic sur le parent pour changer la couleur du TextView quand le menu est développé.
-le click sur le sous menu pour pouvoir lancer une autre activité en récupérant le nom du TextView.

Je sollicite donc votre aide.
J'ai lu la présentation du composant RecyclerView, j'ai chercher pas mal d'exemple mais rien de concluant.

Il y a t-il mieux en terme d'interface qu'un expandable recyclerView?

Pourais-je intégrer par la suite le slideToRemove?

Et comment fait ton pour peupler une expandable RecyclerView avec une base de donnée.
En y réfléchissant, je vois pas vraiment.
Pour le moment j'ai mis en dur tout les principaux menus, et pour chaque sous menu faire un appel en base de donnée, mais je trouve ça très "sale"

Je vous poste mon code source:

Et vous remercie par avance. Toutes remarques sera bonne à prendre.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
public class AffichageJeux  extends Fragment implements LoaderManager.LoaderCallbacks<Cursor>, AdapterView.OnItemClickListener {
 
    private JvAdapter mDbHelper;
    private List<Map<String, Object>> data;
    RecyclerView mRecyclerView;
    FloatingActionMenu fabmenu;
    FloatingActionButton fab, fab1, fab2;
    SimpleCursorAdapter mAdapter;
    CoordinatorLayout cl;
    JeuxVideoAdapter adapter;
    RecyclerItemListener.OnItemClickListener listener;
 
    private int mScrollOffset = 4;
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View mainView = inflater.inflate(R.layout.fragment_jeux_consoles, container, false);
        mRecyclerView = (RecyclerView) mainView.findViewById(R.id.expandableListView1);
        fabmenu = (FloatingActionMenu) mainView.findViewById(R.id.menu_red);
        fab = (FloatingActionButton) mainView.findViewById(fabmenu1);
        fab1 = (FloatingActionButton) mainView.findViewById(fabmenu2);
        fab2 = (FloatingActionButton) mainView.findViewById(fabmenu3);
        fab.setOnClickListener(clickListener);
        fab1.setOnClickListener(clickListener);
        fab2.setOnClickListener(clickListener);
 
        cl = (CoordinatorLayout) mainView.findViewById(main_content);
        mDbHelper = new JvAdapter(getActivity());
        mDbHelper.open();
        Cursor AllFriends = mDbHelper.fetchAllConsoles();
        fabmenu.setClosedOnTouchOutside(true);
 
        Snackbar snackbar = Snackbar
                .make(cl, "Le jeu ... a bien été suprimé", Snackbar.LENGTH_LONG)
                .setAction("Annuler", new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Snackbar snackbar1 = Snackbar.make(cl, "Le jeu à bien été restauré!", Snackbar.LENGTH_SHORT);
                        snackbar1.show();
                    }
                });
 
        snackbar.show();
 
        String[] from = {"nom", "console"};
 
        int[] to = {android.R.id.text1, android.R.id.text2};
 
 
        mRecyclerView.setHasFixedSize(true);
 
        adapter = new JeuxVideoAdapter(getContext());
        adapter.setMode(ExpandableRecyclerAdapter.MODE_ACCORDION);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
 
        mRecyclerView.setAdapter(adapter);
 
        // TextView tv = (TextView) mainView.findViewById(item_header_name);
        //tv.setTextColor(Color.parseColor("#009688"));
       /* mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                if (Math.abs(dy) > mScrollOffset) {
                    if (dy > 0) {
                        fabmenu.hideMenu(true);
                    } else {
                        fabmenu.showMenu(true);
                    }
                }
            }
        });*/
 
        return mainView;
    }
 
    private View.OnClickListener clickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case fabmenu1:
                    break;
                case fabmenu2:
                    break;
                case fabmenu3:
                    final String[] prgmNameList = {"ATARI", "COLECO", "MB", "NEC", "MAGNAVOX", "MICROSOFT", "NINTENDO", "SEGA", "SONY"};
                    int[] prgmImages = {R.drawable.ic_atari_logo,
                            R.drawable.ic_coleco_logo,
                            R.drawable.ic_miltonbradleylogo,
                            R.drawable.ic_800px_nec_logo,
                            R.drawable.ic_preview_magnavox,
                            R.drawable.ic_microsoft,
                            R.drawable.ic_nintendo,
                            R.drawable.ic_sega_logo,
                            R.drawable.ic_playstation,
                    };
 
                    final Dialog dia = new Dialog(getActivity());
                    dia.setContentView(R.layout.customlistviewconstructeur);
                    dia.setCancelable(true);
                    final ListView list_alert = (ListView) dia.findViewById(R.id.listView);
                    final ListViewConstructeurAdapter adapter = new ListViewConstructeurAdapter(getActivity(), prgmNameList, prgmImages);
                    list_alert.setAdapter(adapter);
                    list_alert.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                        public void onItemClick(AdapterView<?> data, View v, int pos, long arg3) {
                            Toast.makeText(getActivity(), list_alert.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show();
                            Intent i = new Intent(getActivity(), ConsoleSql.class);
                            i.putExtra("constructeur", list_alert.getItemAtPosition(pos).toString());
                            startActivity(i);
 
                        }
                    });
                    dia.show();
                    break;
            }
        }
    };
 
    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
        return null;
    }
 
    @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
 
    }
 
    @Override
    public void onLoaderReset(Loader<Cursor> loader) {
 
    }
 
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Log.i(getClass().getCanonicalName(), "Id found : " + adapter.getItemId(position));
        Toast.makeText(getContext(), (int) adapter.getItemId(position), Toast.LENGTH_SHORT).show();
    }
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
public class JeuxVideoAdapter extends ExpandableRecyclerAdapter<JeuxVideoAdapter.PeopleListItem>  {
    public static final int TYPE_PERSON = 1001;
    public boolean isExpanded;
 
 
    public JeuxVideoAdapter(Context context) {
        super(context);
        setItems(getSampleItems());
        isExpanded = false;
 
    }
 
    public static class PeopleListItem extends ExpandableRecyclerAdapter.ListItem {
        public String Text;
 
        public PeopleListItem(String group) {
            super(TYPE_HEADER);
 
            Text = group;
        }
 
        public PeopleListItem(String first, String last) {
            super(TYPE_PERSON);
 
            Text = first + " " + last;
        }
    }
 
 
 
    public class HeaderViewHolder extends ExpandableRecyclerAdapter.HeaderViewHolder {
        TextView name;
 
 
        public HeaderViewHolder(View view) {
            super(view, (ImageView) view.findViewById(R.id.item_arrow));
            name = (TextView) view.findViewById(item_header_name);
        }
 
        public void bind(int position) {
            super.bind(position);
            name.setText(visibleItems.get(position).Text);
        }
    }
 
    public class PersonViewHolder extends ExpandableRecyclerAdapter.ViewHolder {
        TextView name;
 
        public PersonViewHolder(View view) {
            super(view);
            name = (TextView) view.findViewById(R.id.item_name);
        }
 
        public void bind(int position) {
            name.setText(visibleItems.get(position).Text);
        }
 
    }
 
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        switch (viewType) {
            case TYPE_HEADER:
 
                return new HeaderViewHolder(inflate(R.layout.item_header, parent));
            case TYPE_PERSON:
 
            default:
                return new PersonViewHolder(inflate(R.layout.item_person, parent));
        }
    }
 
    @Override
    public void onBindViewHolder(final ExpandableRecyclerAdapter.ViewHolder holder, final int position) {
        switch (getItemViewType(position)) {
            case TYPE_HEADER:
                ((HeaderViewHolder) holder).bind(position);
 
                break;
            case TYPE_PERSON:
            default:
                ((PersonViewHolder) holder).bind(position);
                break;
        }
    }
 
    private List<PeopleListItem> getSampleItems() {
        List<PeopleListItem> items = new ArrayList<>();
 
        items.add(new PeopleListItem("ATARI"));
        items.add(new PeopleListItem("test1","test"));
        items.add(new PeopleListItem("test2","test"));
        items.add(new PeopleListItem("test3","test"));
        items.add(new PeopleListItem("test4","test"));
        items.add(new PeopleListItem("test5","test"));
 
 
        items.add(new PeopleListItem("COLECO"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
 
 
        items.add(new PeopleListItem("MB"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
 
 
        items.add(new PeopleListItem("NEC"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
 
 
        items.add(new PeopleListItem("MAGNAVOX"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
 
 
        items.add(new PeopleListItem("MICROSOFT"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
 
 
        items.add(new PeopleListItem("NINTENDO"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
 
 
        items.add(new PeopleListItem("SEGA"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
 
 
        items.add(new PeopleListItem("SONY"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
        items.add(new PeopleListItem("test","test"));
 
        return items;
    }
}