Обычно у вас есть данные, которые вы хотели бы представить в этом формате. Обычно это будет передано в ContentAdapter, чтобы вы могли использовать его для заполнения каждого фрагмента. В настоящий момент все содержимое устанавливается в XML, а не в вашем адаптере.
Если вы хотите изменить изображения для каждого нужно добавить атрибут ID в 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>
Тогда вы должны изменить класс ViewHolder в TileContentFragment
, так что мы можем достать из ImageView
и TextView
в 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);
}
}
Тогда просто для примера позволяет установить название каждой плитку на «Привет»:
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])
}
}
Надеется, что это помогает.
Спасибо! Я попробую его и отчитаюсь, когда я это сделаю –
ВОПРОС № 1: «TextView tileText» не «TextView tileText» в «public static class ViewHolder ..» должен быть «TextView tileTitle», как в «tileTitle» = (TextView) tileItem.findViewById ... «in» public ViewHolder (LayoutInflater ..) ниже? /// /// У меня также есть несколько ошибок при запуске приложения: ОШИБКА № 1: В «public ViewHolder() { ошибка: конструктор ViewHolder в классе ViewHolder не может применяться к заданным типам; требуется: Вид найдено: нет аргументов причин: фактические и формальные списки аргументов различаются по длине « //// ОШИБКА # 2: Кроме того, в» общественном ViewHolder() { «ошибка: вызов к супер должен быть первым оператором in constructor " –
Да, вы правы в имени переменной, я делал это в браузере, чтобы был шанс на ошибки! –