IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Creer un click listener sur une Expandable RecyclerView et SQlite


Sujet :

Composants graphiques Android

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2014
    Messages : 10
    Par défaut Creer un click listener sur une Expandable RecyclerView et SQlite
    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;
        }
    }

  2. #2
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2014
    Messages : 10
    Par défaut
    J'arrive bien à mettre un click listener , mais le déroulement du menu ne ce fait plus.

    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
    public class HeaderViewHolder extends ExpandableRecyclerAdapter.HeaderViewHolder implements View.OnClickListener {
            TextView name;
     
     
            public HeaderViewHolder(View view) {
                super(view, (ImageView) view.findViewById(R.id.item_arrow));
                name = (TextView) view.findViewById(item_header_name);
                view.setOnClickListener(this);
     
            }
     
            public void bind(int position) {
                super.bind(position);
                name.setText(visibleItems.get(position).Text);
            }
     
            @Override
            public void onClick(View v) {
                Toast.makeText(mContext, "hearder", Toast.LENGTH_SHORT).show();
                System.out.println("test");
            }
        }

Discussions similaires

  1. Comment creer un recordset ADO sur une plage de cellules
    Par JYL74 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/12/2007, 09h36
  2. [java] listener sur une forme
    Par Mystiss dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 04/11/2007, 21h41
  3. Réponses: 9
    Dernier message: 12/08/2006, 01h36
  4. [HTML] click lien sur une cellule et page qui s'ouvre dans une autre cellule
    Par mariogarcia dans le forum Balisage (X)HTML et validation W3C
    Réponses: 26
    Dernier message: 24/05/2006, 14h37
  5. Ajouter un listener sur une variable
    Par serwol dans le forum Général Java
    Réponses: 4
    Dernier message: 14/10/2005, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo