Android App开发中使用RecyclerView实现Gallery画廊的实例

2019-12-10 18:27:32于海丽

Item的布局文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://www.easck.com/apk/res/android" 
  android:layout_width="120dp" 
  android:layout_height="120dp" 
  android:background="@drawable/item_bg02" > 
 
  <ImageView 
    android:id="@+id/id_index_gallery_item_image" 
    android:layout_width="80dp" 
    android:layout_height="80dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_margin="5dp" 
    android:scaleType="centerCrop" /> 
 
  <TextView 
    android:id="@+id/id_index_gallery_item_text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/id_index_gallery_item_image" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="5dp" 
    android:layout_marginTop="5dp" 
    android:textColor="#ff0000" 
    android:text="some info" 
    android:textSize="12dp" /> 
 
</RelativeLayout> 

数据适配器:

package com.example.zhy_horizontalscrollview03; 
 
import java.util.List; 
 
import android.content.Context; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.TextView; 
 
public class GalleryAdapter extends 
    RecyclerView.Adapter<GalleryAdapter.ViewHolder> 
{ 
 
  private LayoutInflater mInflater; 
  private List<Integer> mDatas; 
 
  public GalleryAdapter(Context context, List<Integer> datats) 
  { 
    mInflater = LayoutInflater.from(context); 
    mDatas = datats; 
  } 
 
  public static class ViewHolder extends RecyclerView.ViewHolder 
  { 
    public ViewHolder(View arg0) 
    { 
      super(arg0); 
    } 
 
    ImageView mImg; 
    TextView mTxt; 
  } 
 
  @Override 
  public int getItemCount() 
  { 
    return mDatas.size(); 
  } 
 
  /** 
   * 创建ViewHolder 
   */ 
  @Override 
  public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) 
  { 
    View view = mInflater.inflate(R.layout.activity_index_gallery_item, 
        viewGroup, false); 
    ViewHolder viewHolder = new ViewHolder(view); 
 
    viewHolder.mImg = (ImageView) view 
        .findViewById(R.id.id_index_gallery_item_image); 
    return viewHolder; 
  } 
 
  /** 
   * 设置值 
   */ 
  @Override 
  public void onBindViewHolder(final ViewHolder viewHolder, final int i) 
  { 
    viewHolder.mImg.setImageResource(mDatas.get(i)); 
  } 
 
}