Je veux répéter "plus" ⇔ "fermer" dans la vue parent de Expandablerecyclerview. Comme ça.
Tout d'abord, implémentez chaque fichier en vous référant à cela. http://qiita.com/iKASiH/items/6707f9062e2e4bc48696
parent_item.xml
, recyclerview.xml
)
--Au début, tout est fermé, alors placez-en plus sur tout (parent_item.xml
)Parent_ViewHolder.xml
)
--Convertir le texte pour en voir plus lorsqu'il est réduit (Parent_ViewHolder.xml
)Mettons-le en œuvre.
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="ouvert"
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>
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) {//Obtenir l'identifiant de la vue parent
super(itemView);
text1 = (TextView)itemView.findViewById(R.id.parenttext);
}
public void open(){
text1.setText("Fermer");
}
public void close(){
text1.setText("ouvert");
}
@Override//Appelé quand il se propage
public void expand() {
open();
}
@Override//Appelé quand rétréci
public void collapse() {
close();
}
}
Faisons le! !!
Il est "fermé" même s'il n'est pas ouvert ... Même s'il est ouvert, il est "ouvert" ...: fatigue_face:
La solution consiste à déterminer s'il est ouvert pour chaque défilement et à refléter le texte.
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) {
/*--------------Ajouter ici---------------*/
if(isGroupExpanded(flatPosition)){
holder.open();
}
else{
holder.close();
}
/*---------------------------------------*/
}
@Override
public void onBindChildViewHolder(Child_ViewHolder holder, int flatPosition, ExpandableGroup group, int childIndex) {
}
}
Il existe une méthode isGroupExpanded dans cette bibliothèque, qui détermine si elle est ouverte ou non. Si flatposition est utilisé comme argument, true ou false sera renvoyé en fonction de l'état de la vue parent. Utilisez-le pour refléter le texte. C'est tout ce qu'on peut en dire. J'étais assez impatient. : froncer les sourcils2:
Veuillez laisser un commentaire.
Github : https://github.com/hisakioomae/Expandable_Recyclerview_sample
Recommended Posts