Ich möchte "more" ⇔ "close" in der übergeordneten Ansicht von Expandablerecyclerview wiederholen. So was.
Implementieren Sie zunächst jede Datei, indem Sie darauf verweisen. http://qiita.com/iKASiH/items/6707f9062e2e4bc48696
parent_item.xml
, recyclerview.xml
)parent_item.xml
)Parent_ViewHolder.xml
)
--Konvertieren Sie Text, um mehr zu sehen, wenn er verkleinert wird (Parent_ViewHolder.xml
)Lassen Sie es uns implementieren.
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>
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! !!
Es ist "geschlossen", obwohl es nicht offen ist ... Obwohl es offen ist, ist es "offen" ...: müde_gesicht:
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