Normalement, vous auriez des données que vous souhaitez présenter dans ce format de liste en mosaïque. Cela devrait normalement être passé dans ContentAdapter afin que vous puissiez l'utiliser pour remplir chaque tuile. À la minute tout le contenu est en train d'être défini en XML, pas dans votre adaptateur.
Si vous voulez changer les images pour chaque vous devez ajouter un attribut id à la disposition item_tile
:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:padding="@dimen/tile_padding">
<ImageView
!--Add the id for the ImageView-->
android:id="@+id/tile_image"
android:layout_width="match_parent"
android:layout_height="@dimen/tile_height"
android:scaleType="centerCrop"
android:src="@drawable/paris" />
...
</RelativeLayout>
Ensuite, vous devez changer la classe ViewHolder dans le TileContentFragment
afin que nous puissions mettre la main sur la ImageView
et TextView
dans la disposition item_tile
.
public static class ViewHolder extends RecyclerView.ViewHolder {
ImageView tileImage;
TextView tileTitle;
public ViewHolder(View itemView) {
super(itemView);
this.tileImage = (ImageView) itemView.findViewById(R.id.tile_image);
this.tileTitle = (TextView) itemView.findViewById(R.id.tile_title);
}
}
Ensuite, il suffit à titre d'exemple permet de définir le titre de chaque carreau à "Bonjour":
public static class ContentAdapter extends RecyclerView.Adapter<ViewHolder> {
Other class methods...
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_tile, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.tileTitle.setText("Hello");
//If you had images for the different tile you could set them here too
//holder.tileImage.setImageResource([THE ID OF YOUR IMAGE HERE])
}
}
Hope this helps.
Merci! Je vais essayer et rapporter quand je l'ai fait –
QUESTION # 1: "TextView tileText" n'est pas dans "public static class ViewHolder .." censé être "TextView tileTitle", comme il est dans "tileTitle" = (TextView) tileItem.findViewById ... "dans" public ViewHolder (LayoutInflater ..) ci-dessous? /// J'ai également eu quelques erreurs lors de l'exécution de l'application: ERROR # 1: Dans "public ViewHolder() { erreur: le constructeur ViewHolder de la classe ViewHolder ne peut pas être appliqué à des types donnés; nécessaire: Voir trouvé: aucun argument raison: listes d'arguments réels et formels diffèrent de longueur « //// ERREUR # 2: Toujours dans » ViewHolder publique() { « erreur: appel à super doit être première déclaration dans le constructeur " –
Oui vous avez raison sur le nom de la variable, je le faisais dans le navigateur donc il y avait une chance pour les erreurs! –