Widget pour répéter dynamiquement la vue
Inclus dans la bibliothèque de support (com.android.support: recyclerview-v7)
Exemple
_ (Puisque CardView est également utilisé cette fois, décrivez-le) _
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("janvier");
list.add("février");
list.add("Yayoi");
list.add("Uzuki");
list.add("Satsuki");
list.add("Minazuki");
list.add("juillet");
list.add("Hazuki");
list.add("Plusieurs mois");
list.add("Kannazuki");
list.add("Shimotsuki");
list.add("Course de maître");
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] Une instance de LinearLayoutManager est créée et transmise comme argument de la méthode setLayoutManager () de RecyclerView. En plus de LinearLayoutManager, il existe d'autres types tels que GridLayoutManager. Changez en fonction de la mise en page que vous souhaitez afficher.
[2] Un adaptateur est généré et défini dans la vue. Cette fois, les données sont également transmises au moment de la génération de l'adaptateur.
[3] Une classe qui hérite de RecyclerView.ViewHolder. Contient une référence à View. La méthode onCreateViewHolder () dans [5] renvoie une instance de ViewHolder.
[4] Cette fois, les données sont également transmises lorsque l'adaptateur est généré.
[5] View inflate (inflate), ViewHolder sont créés et renvoyés.
[6] Les données sont définies pour ViewHolder.
[7] Renvoie le nombre d'éléments à afficher dans RecyclerView.
Recommended Posts