简体   繁体   中英

Set text for a single item of a RecyclerView

I need to set a single title for each element of my Recycler view. How can I perform it?

This is my java code:

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);

    }
} }

I also create the xml layout for the items (in this case images):

<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>

I tried to add a text view here , aligned and centered but how can I after set this text ?

UPDATE : this is your solution ankit but what is wrong?

Create single item xml as :

 <?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>

Now modify adapter as:

  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);

     }
 }
  }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM