studio recyclerview recycler personalizado listas ejemplo dinamicas cardview card and android expandablelistview android-5.0-lollipop android-recyclerview

recyclerview - Cómo implementar elementos expandibles con LinearLayoutManager(introducido con Android L)



recyclerview android studio ejemplo (1)

Esta library ayuda a agrupar sus elementos en "secciones" y luego puede implementar la funcionalidad expandir / contraer que se example continuación en este example .

Primero creas tu clase de sección:

class MySection extends StatelessSection { String header; List<String> list; boolean expanded = true; public MySection(String header, List<String> list) { // call constructor with layout resources for this Section header and items super(R.layout.section_header, R.layout.section_item); this.myHeader = header; this.myList = list; } @Override public int getContentItemsTotal() { return expanded? list.size() : 0; } @Override public RecyclerView.ViewHolder getHeaderViewHolder(View view) { return new HeaderViewHolder(view); } @Override public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) { final HeaderViewHolder headerHolder = (HeaderViewHolder) holder; headerHolder.tvTitle.setText(title); headerHolder.rootView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { expanded = !expanded; headerHolder.imgArrow.setImageResource( expanded ? R.drawable.ic_keyboard_arrow_up_black_18dp : R.drawable.ic_keyboard_arrow_down_black_18dp ); sectionAdapter.notifyDataSetChanged(); } }); } @Override public RecyclerView.ViewHolder getItemViewHolder(View view) { // return a custom instance of ViewHolder for the items of this section return new MyItemViewHolder(view); } @Override public void onBindItemViewHolder(RecyclerView.ViewHolder holder, int position) { MyItemViewHolder itemHolder = (MyItemViewHolder) holder; // bind your view here itemHolder.tvItem.setText(list.get(position)); } }

Luego cree una instancia de sus secciones y configure su adaptador:

// Create an instance of SectionedRecyclerViewAdapter SectionedRecyclerViewAdapter sectionAdapter = new SectionedRecyclerViewAdapter(); // Add your Sections sectionAdapter.addSection(new MySection("Section 1", Arrays.asList(new String[] {"Item 1", "Item 2", "Item 3", "Item 4" }))); sectionAdapter.addSection(new MySection("Section 2", Arrays.asList(new String[] {"Item 1", "Item 2" }))); // Set up your RecyclerView with the SectionedRecyclerViewAdapter RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview); recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); recyclerView.setAdapter(sectionAdapter);

RecyclerView se ha introducido con Android L y forma parte de la biblioteca AppCompat v7. Entonces decidí actualizar mi aplicación con este nuevo RecyclerView para reemplazar mis ListView s. Para hacerlo, cuando se trata de configurar un LayoutManager para RecyclerView , estoy usando LinearLayoutManager , que funciona bien.

Aquí está lo difícil: cuando quiero cambiar mi ExpandableListView a un RecyclerView . Dado que Google no ha creado un " ExpandableLayoutManager ", esto es bastante complicado y no puedo lograrlo.

La documentation menciona a los niños pero parece ser hijos de la vista raíz de RecyclerView no de los propios niños.

¿Alguien tiene una solución o alguna pista al respecto? O al menos alguna información como dónde comenzar para poder implementar mi propio LayoutManager .