[JAVA] Hinweise zum Erweitern () und Reduzieren () von Expandablerecyclerview

Einführung

Ich möchte "more" ⇔ "close" in der übergeordneten Ansicht von Expandablerecyclerview wiederholen. So was.

device.gif

Annahme

Implementieren Sie zunächst jede Datei, indem Sie darauf verweisen. http://qiita.com/iKASiH/items/6707f9062e2e4bc48696

Implementierung

Erforderliche Dateien

Zusatzfunktionen

Lassen Sie es uns implementieren.

Layoutdatei

recyclerview.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

parent_item.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView
        android:gravity="center"
        android:id="@+id/parenttext"
        android:text="öffnen"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize" />
</LinearLayout>

child_item.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView
        android:id="@+id/childtext"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize" />
</LinearLayout>

Funktionsdatei

Parent_ViewHolder


package jp.app.oomae.hisaki.expandable_recyclerview;

import android.view.View;
import android.widget.TextView;
import com.thoughtbot.expandablerecyclerview.viewholders.GroupViewHolder;

public class Parent_ViewHolder extends GroupViewHolder {

    private TextView text1;

    public Parent_ViewHolder(View itemView) {//ID der übergeordneten Ansicht abrufen
        super(itemView);
        text1 = (TextView)itemView.findViewById(R.id.parenttext);
    }
    public void open(){
        text1.setText("schließen");
    }
    public void close(){
        text1.setText("öffnen");
    }

    @Override//Wird aufgerufen, wenn es sich ausbreitet
    public void expand() {
        open();
    }
    @Override//Wird beim Schrumpfen aufgerufen
    public void collapse() {
        close();
    }
}

Machen wir das! !!

device.gif

Es ist "geschlossen", obwohl es nicht offen ist ... Obwohl es offen ist, ist es "offen" ...: müde_gesicht:

Lösung

Die Lösung besteht darin, festzustellen, ob es für jede Schriftrolle geöffnet ist, und den Text wiederzugeben.

Home_Adapter.java


package jp.app.oomae.hisaki.expandable_recyclerview;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.thoughtbot.expandablerecyclerview.ExpandCollapseController;
import com.thoughtbot.expandablerecyclerview.ExpandableRecyclerViewAdapter;
import com.thoughtbot.expandablerecyclerview.models.ExpandableGroup;

import java.util.List;

public class Home_Adapter extends ExpandableRecyclerViewAdapter<Parent_ViewHolder, Child_ViewHolder> {

    private ExpandCollapseController expandCollapseController;

    public Home_Adapter(List<? extends ExpandableGroup> groups) {
        super(groups);
        this.expandCollapseController = new ExpandCollapseController(expandableList, this);
    }

    @Override
    public Parent_ViewHolder onCreateGroupViewHolder(final ViewGroup parent, final int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.parent_item, parent, false);
        return new Parent_ViewHolder(view);
    }

    @Override
    public Child_ViewHolder onCreateChildViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.child_item, parent, false);
        return new Child_ViewHolder(view);
    }

    @Override
    public void onBindGroupViewHolder(Parent_ViewHolder holder, int flatPosition, ExpandableGroup group) {
        /*--------------Hier hinzufügen---------------*/
        if(isGroupExpanded(flatPosition)){
            holder.open();
        }
        else{
            holder.close();
        }
        /*---------------------------------------*/
    }

    @Override
    public void onBindChildViewHolder(Child_ViewHolder holder, int flatPosition, ExpandableGroup group, int childIndex) {
    }
}

In dieser Bibliothek befindet sich eine isGroupExpanded-Methode, die bestimmt, ob sie geöffnet ist oder nicht. Wenn flatposition als Argument verwendet wird, wird je nach Status der übergeordneten Ansicht true oder false zurückgegeben. Verwenden Sie es, um den Text wiederzugeben. Dies ist abgeschlossen. Ich war ziemlich ungeduldig. : Stirnrunzeln2:

Bitte lass ein Kommentar da.

Github : https://github.com/hisakioomae/Expandable_Recyclerview_sample

Recommended Posts

Hinweise zum Erweitern () und Reduzieren () von Expandablerecyclerview
Hinweise zum Java-Pfad und -Paket
Veröffentlichte die No Todo App anstelle von Todo. .. (Und Ridgepole Notizen)
Hinweise zur Stream-API und zu SQL von Java
Ruby on Rails ~ Grundlagen von MVC und Router ~
Laden Sie Notizen in Java auf S3 hoch und laden Sie sie herunter
Hinweise zu Protokollpuffern
Python-Memo auf Docker
[Android] Hinweise zu XML
Hinweise zu regulären Ausdrücken