Tile Fragment,如何在不同的tile中获取不同的内容?
Tile Fragment, how do I get different content in different tiles?
过去几天我一直在开发我的第一个 Android 应用程序,使用的是这份指南:Material Design Guide 来自 Google。
我决定选择 Tile 片段,但问题是这些图块中的内容是静态的/图块 1 中的内容与图块 2、3、4 等中的内容相同.
我如何更改此设置以便每个图块都具有独特的内容?
如有任何帮助,我们将不胜感激!
通常情况下,您会有一些想要以这种平铺列表格式呈现的数据。这通常会传递到 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>
那么你应该改变 TileContentFragment
中的 ViewHolder class 这样我们就可以得到 item_tile
布局中的 ImageView
和 TextView
.
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);
}
}
然后为了示例目的,让我们将每个图块的标题设置为 "Hello":
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])
}
}
希望对您有所帮助。
过去几天我一直在开发我的第一个 Android 应用程序,使用的是这份指南:Material Design Guide 来自 Google。
我决定选择 Tile 片段,但问题是这些图块中的内容是静态的/图块 1 中的内容与图块 2、3、4 等中的内容相同. 我如何更改此设置以便每个图块都具有独特的内容?
如有任何帮助,我们将不胜感激!
通常情况下,您会有一些想要以这种平铺列表格式呈现的数据。这通常会传递到 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>
那么你应该改变 TileContentFragment
中的 ViewHolder class 这样我们就可以得到 item_tile
布局中的 ImageView
和 TextView
.
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);
}
}
然后为了示例目的,让我们将每个图块的标题设置为 "Hello":
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])
}
}
希望对您有所帮助。