[JAVA] Jetzt habe ich die Grundlagen von RecyclerView zusammengefasst

Was ist RecyclerView?

  • Widget zum dynamischen Wiederholen der Ansicht

  • In der Support-Bibliothek enthalten (com.android.support: recyclerview-v7)

Beispiel 1.png

Wie verwende ich?

  • Um RecyclerView verwenden zu können, müssen Sie mindestens Adapter und ViewHolder erstellen.
  • Verwenden Sie LayoutManager für die Layoutverwaltung von RecyclerView

Machen wir es

Verfassung

  • Dieses Mal werde ich es mit der minimalen Konfiguration machen
  • RecyclerViewActivity.java Recy ・ ・ RecyclerView anzeigen
  • RecyclerViewAdapter.java ・ ・ ・ Verknüpft die Ansicht mit Daten
  • activity_recycler_view.xml ・ ・ ・ Layout der gesamten RecyclerView
  • row.xml ・ ・ ・ Layout einer Zeile in RecyclerView

Verfahren

(1) Beschreiben Sie die Abhängigkeit der Support Library in build.gradle

_ (Da diesmal auch CardView verwendet wird, beschreiben Sie es) _

build.gradle


dependencies {
	...
    compile 'com.android.support:recyclerview-v7:23.3.0'
    compile 'com.android.support:cardview-v7:23.3.0'
  
    ...
}

(2) Definieren Sie das Layout der gesamten RecyclerView

activity_recycler_view.xml


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

(3) Definieren Sie das Layout für jede Zeile

row.xml


<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="64dp"
    android:layout_margin="8dp"
    android:orientation="vertical">

    <TextView
        android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp" />
</android.support.v7.widget.CardView>

(4) Beschreiben Sie den Initialisierungsprozess von RecyclerView mit Aktivität

RecyclerViewActivity.java



public class RecyclerViewActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private RecyclerViewAdapter recyclerViewAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recycler_view);
        recyclerView = (RecyclerView) findViewById(R.id.recycler_view);

		 // [1] 
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(linearLayoutManager);

		 // [2] 
        recyclerViewAdapter = new RecyclerViewAdapter(getListData());
        recyclerView.setAdapter(recyclerViewAdapter);
    }

    private List<String> getListData() {
        ArrayList<String> list = new ArrayList<>();
        list.add("Januar");
        list.add("Februar");
        list.add("Yayoi");
        list.add("Uzuki");
        list.add("Satsuki");
        list.add("Minazuki");
        list.add("Juli");
        list.add("Hazuki");
        list.add("Viele Monate");
        list.add("Kannazuki");
        list.add("Shimotsuki");
        list.add("Master Run");
        return list;
    }

}

(5) Erstellen Sie eine Adapterklasse und ordnen Sie die Daten der Ansicht zu.

RecyclerViewAdapter.java



public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {

    protected List<String> dataSet;

	// [3]
    public static class ViewHolder extends RecyclerView.ViewHolder {
        public final TextView textView;

        public ViewHolder(View v) {
            super(v);
            textView = (TextView) v.findViewById(R.id.text_view);
        }
    }
    
	// [4]
    public RecyclerViewAdapter(List<String> myDataSet) {
        dataSet = myDataSet;
    }

	// [5]
    @Override
    public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.row, parent, false);
        ViewHolder vh = new ViewHolder(v);
        return vh;
    }

	// [6]
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        String text = dataSet.get(position);
        holder.textView.setText(text);
    }

	// [7]
    @Override
    public int getItemCount() {
        return dataSet.size();
    }

}


Beschreibung

  • [1] Eine Instanz von LinearLayoutManager wird erstellt und als Argument der setLayoutManager () -Methode von RecyclerView übergeben. Neben LinearLayoutManager gibt es noch andere Typen wie GridLayoutManager. Ändern Sie entsprechend dem Layout, das Sie anzeigen möchten.

  • [2] Ein Adapter wird generiert und in der Ansicht festgelegt. Dieses Mal werden die Daten auch zum Zeitpunkt der Generierung des Adapters übergeben.

  • [3] Eine Klasse, die von RecyclerView.ViewHolder erbt. Enthält einen Verweis auf Ansicht. Die onCreateViewHolder () -Methode in [5] gibt eine Instanz von ViewHolder zurück.

  • [4] Dieses Mal werden die Daten auch übergeben, wenn der Adapter generiert wird.

  • [5] View inflate (inflate), ViewHolder werden erstellt und zurückgegeben.

  • [6] Daten werden für ViewHolder festgelegt.

  • [7] Gibt die Anzahl der Elemente zurück, die in RecyclerView angezeigt werden sollen.

Impressionen

  • Ich konnte den Prozessablauf verfolgen, aber ehrlich gesagt habe ich das Gefühl, dass ich nicht verstanden habe, was LayoutManager hinter den Kulissen tut und was ViewHolder tut.

Recommended Posts