Ich möchte den Inhalt der Recyclingansicht falten und dehnen!
Ich habe darauf hingewiesen. https://github.com/thoughtbot/expandable-recycler-view Dieser ist leichter zu verstehen! !!
Fügen Sie zunächst die Bibliothek build.gradle hinzu.
build.gradle
dependencies {
compile 'com.thoughtbot:expandablerecyclerview:1.3'
compile 'com.android.support:recyclerview-v7:25.3.1'
}
Erstellen Sie als Nächstes einen übergeordneten "ViewHolder" und einen untergeordneten "ViewHolder". ViewHolder ordnet Daten der auf dem Bildschirm angezeigten Ansicht zu. Natürlich gibt es eine übergeordnete und eine untergeordnete Ansicht, daher sind zwei ViewHolders erforderlich.
Parent_ViewHolder.java
Paket Dies ist mein Paket
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 set(String i){//Ändern Sie die erfasste ID
text1.setText(i);
}
}
Child_ViewHolder.java
Paket Dies ist mein Paket;
import android.view.View;
import android.widget.TextView;
import com.thoughtbot.expandablerecyclerview.viewholders.ChildViewHolder;
public class Child_ViewHolder extends ChildViewHolder {
private TextView text1;
public Child_ViewHolder(View itemView) {//ID der untergeordneten Ansicht abrufen
super(itemView);
text1 = (TextView)itemView.findViewById(R.id.childtext);
}
public void set(String i){//Ändern Sie die erfasste ID
text1.setText(i);
}
}
Anschließend erstellen wir einen Adapter, der diese verknüpft. Ist es ein Ort, an dem Eltern und Kinder verwandt sind, also wie ein Zuhause? : raise_hand:
Home_Adapter.java
Paket Dies ist mein Paket;
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) {
holder.set(String.valueOf(flatPosition));//Parent_Rufen Sie die von viewHolder erstellte Funktion auf
}
@Override
public void onBindChildViewHolder(Child_ViewHolder holder, int flatPosition, ExpandableGroup group, int childIndex) {
holder.set(String.valueOf(childIndex));//Child_Rufen Sie die von viewHolder erstellte Funktion auf
}
}
Als nächstes erstellen wir ein Layout, das in Beziehung gesetzt werden soll.
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:background="@color/colorPrimaryDark"
android:id="@+id/parenttext"
android:text="Elternteil"
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:text="Kind"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize" />
</LinearLayout>
Nachdem wir nun den Adapter und das Layout haben, führen wir ihn als Programm aus. : aufzeigen:
MainActivity.java
package jp.app.oomae.hisaki.expandable_recyclerview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import static jp.app.oomae.hisaki.expandable_recyclerview.Home.makehome;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recyclerview);
RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recyclerview);
recyclerView.setLayoutManager(new GridLayoutManager(this, 1));
Home_Adapter adapter = new Home_Adapter(makehome());
recyclerView.setAdapter(adapter);//Stellen Sie den Adapter ein
}
}
Und lassen Sie uns eine Recycling-Ansicht auf dem Hauptbildschirm einrichten.
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:background="@color/colorAccent"
android:id="@+id/recyclerview"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
Als nächstes entscheiden wir, wie viele Eltern und Kinder angezeigt werden sollen. Diesmal ist es eine statische Implementierung, aber wenn Sie dies ändern, wird es meiner Meinung nach dynamisch sein. vielleicht,,, Implementieren Sie zunächst die übergeordneten und untergeordneten Datengruppen.
Parent.java
Paket mein Mann;
import com.thoughtbot.expandablerecyclerview.models.ExpandableGroup;
import java.util.List;
public class Parent extends ExpandableGroup<Child> {
public Parent(String title, List<Child> items) {
super(title, items);
}
}
Child.java
Paket mein Mann;
import android.os.Parcel;
import android.os.Parcelable;
public class Child implements Parcelable {
private String name;
public Child(String name) {
this.name = name;
}
protected Child(Parcel in) {
name = in.readString();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
}
@Override
public int describeContents() {
return 0;
}
public static final Creator<Child> CREATOR = new Creator<Child>() {
@Override
public Child createFromParcel(Parcel in) {
return new Child(in);
}
@Override
public Child[] newArray(int size) {
return new Child[size];
}
};
}
Als nächstes erstellen wir ein Haus, das "Parent.java" mit "Child.java" verknüpft. (Es ist unmöglich, ein Haus mit mehreren Eltern und mehreren Kindern zu haben, aber es fühlt sich wie eine Unterkunft an?)
Home.java
package jp.app.oomae.hisaki.expandable_recyclerview;
import java.util.Arrays;
import java.util.List;
public class Home{
final private static int parents_num = 9;//Anzahl der Eltern
final private static int child_num = 5;//Anzahl der Kinder
public static List<Parent> makehome() {
Parent[] num = new Parent[parents_num];
for(int i = 0; i < parents_num; i++) {
num[i] = new Parent("parent" + String.valueOf(i),receive_child());
}
return Arrays.asList(num);
}
public static List<Child> receive_child() {
Child[] num = new Child[child_num];
for(int i = 0; i < child_num; i++) {
num[i] = new Child("child" + String.valueOf(i));
}
return Arrays.asList(num);
}
}
Hier kombinieren wir die untergeordneten Daten und die übergeordneten Daten.
Das ist alles für den Code. Wir suchen Kritik und Kritik. : pattern_tone3:
https://github.com/hisakioomae/Expandable_Recyclerview_sample/tree/master
Recommended Posts