Widget zum dynamischen Wiederholen der Ansicht
In der Support-Bibliothek enthalten (com.android.support: recyclerview-v7)
Beispiel
_ (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'
...
}
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" />
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>
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;
}
}
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();
}
}
[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.
Recommended Posts