【问题标题】:Set text for a single item of a RecyclerView为 RecyclerView 的单个项目设置文本
【发布时间】:2018-05-10 12:42:11
【问题描述】:

我需要为 Recycler 视图的每个元素设置一个标题。我该如何执行?

这是我的java代码:

public class HorizontalAdapterViewTopDieci extends RecyclerView.Adapter<HorizontalAdapterViewTopDieci.HorizontalViewHolder>
{

private int[] items;

public HorizontalAdapterViewTopDieci(int[] items) {

    this.items = items;

}

@Override
public HorizontalViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
    View view = inflater.inflate(R.layout.item_layout_recycler_view_top_10, parent, false);
    return new HorizontalViewHolder(view);
}

@Override
public void onBindViewHolder(HorizontalViewHolder holder, int position) {
    holder.image.setImageResource(items[position]);
    holder.titleText.setText("Recipe");
}

@Override
public int getItemCount() {
    return items.length;
}

public class HorizontalViewHolder extends RecyclerView.ViewHolder {
    ImageView image;
    TextView titleText;

    public HorizontalViewHolder(View itemView) {
        super(itemView);
        image = itemView.findViewById(R.id.image_view_ricette_categorie_primi_top_10);
        titleText = itemView.findViewById(R.id.titleText);

    }
} }

我还为项目(在本例中为图像)创建了 xml 布局:

<LinearLayout

xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:orientation="vertical"

>

<ImageView

    android:id="@+id/image_view_ricette_categorie_primi_top_10"
    android:layout_width="125dp"
    android:layout_height="150dp"
    android:scaleType="centerCrop"
    android:src="@drawable/test_pizza"
    android:layout_gravity="center_horizontal"


    />
<TextView
    android:id="@+id/titleText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Text"
    android:layout_gravity="center_horizontal"
    android:textColor="@color/colorRicette"
    />
</LinearLayout>

我尝试在此处添加文本视图,对齐并居中,但设置此文本后如何?

更新:这是您的解决方案 ankit,但有什么问题?

【问题讨论】:

  • 请附加 Horizo​​ntalAdapterImageViewTopDieci 类。您应该在 xml 布局中添加一个 TextView 并在 Adapter 中以编程方式设置文本。
  • @gabodroid 你在这里
  • 你的数组只有drawables。您希望在每一行中显示什么文字?
  • 你想在 imageview 上显示文本吗?
  • 我需要显示一个字符串,例如:"Image 1"

标签: java android arraylist android-recyclerview textview


【解决方案1】:

创建单个项目 xml 为:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout

xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:orientation="vertical"

>



<ImageView

    android:id="@+id/image_view_ricette_categorie_primi_top_10"
    android:layout_width="125dp"
    android:layout_height="150dp"
    android:scaleType="centerCrop"
    android:src="@drawable/ic_launcher_background"
    android:layout_gravity="center_horizontal"


    /> 
  <TextView
    android:id="@+id/titleText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Text"
    android:layout_gravity="center_horizontal"/>
</LinearLayout>

现在将适配器修改为:

  public class HorizontalAdapterImageViewTopDieci extends RecyclerView.Adapter<HorizontalAdapterImageViewTopDieci.HorizontalViewHolder> 
 {

 private int[] items;

 public HorizontalAdapterImageViewTopDieci(int[] items) {

     this.items = items;

 }

 @Override
 public HorizontalViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
     LayoutInflater inflater = LayoutInflater.from(parent.getContext());
     View view = inflater.inflate(R.layout.item_layout_recycler_view_immagini_top_10, parent, false);
     return new HorizontalViewHolder(view);
 }

 @Override
 public void onBindViewHolder(HorizontalViewHolder holder, int position) {
     holder.image.setImageResource(items[position]);
     holder.titleText.setText("Image"+position);
 }

 @Override
 public int getItemCount() {
      return items.length;
 }

 public class HorizontalViewHolder extends RecyclerView.ViewHolder {
     ImageView image;
     TextView titleText;

     public HorizontalViewHolder(View itemView) {
         super(itemView);
         image = itemView.findViewById(R.id.image_view_ricette_categorie_primi_top_10);
         titleText = itemView.findViewById(R.id.titleText);

     }
 }
  }

【讨论】:

  • 您想为列表中的所有文本设置单个文本
  • 所以把代码改成:holder.titleText.setText("Recipe");
  • 是的,但不是静态文本,每张图片都会更改
  • 无论如何它都不起作用,“图片”或“食谱”都不会显示在我的图片下方
  • 先生/女士,它目前正在我这边工作。你能在我更新代码后用最新的代码更新代码吗??
猜你喜欢
  • 2016-07-10
  • 1970-01-01
  • 1970-01-01
  • 2019-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
相关资源
最近更新 更多