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 布局中的 ImageViewTextView .

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])
    }
}

希望对您有所帮助。