Android RecyclerView布局就这么简单

2019-12-10 18:15:18刘景俊

RecyclerAdapter:

package com.example.double2.recyclerviewtest; 
 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
 
import java.util.List; 
 
/** 
 * 项目名称:RecyclerViewTest 
 * 创建人:Double2号 
 * 创建时间:2016/4/18 8:12 
 * 修改备注: 
 */ 
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> { 
  private List<String> mData; 
 
  public RecyclerAdapter(List<String> data) { 
    mData = data; 
  } 
 
  //定义一个监听对象,用来存储监听事件 
  public OnItemClickListener mOnItemClickListener; 
 
  public void setOnItemClickListener(OnItemClickListener itemClickListener) { 
    mOnItemClickListener = itemClickListener; 
  } 
 
  //定义OnItemClickListener的接口,便于在实例化的时候实现它的点击效果 
  public interface OnItemClickListener { 
    void onItemClick(View view, int position); 
  } 
 
  public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
    public TextView tvViewHolder; 
    public LinearLayout llViewHolder; 
 
    //初始化viewHolder,此处绑定后在onBindViewHolder中可以直接使用 
    public ViewHolder(View itemView){ 
      super(itemView); 
      tvViewHolder=(TextView)itemView.findViewById(R.id.tv_view_holder); 
      llViewHolder=(LinearLayout) itemView; 
      llViewHolder.setOnClickListener(this); 
    } 
 
    //通过接口回调来实现RecyclerView的点击事件 
    @Override 
    public void onClick(View v) { 
      if(mOnItemClickListener!=null) { 
        //此处调用的是onItemClick方法,而这个方法是会在RecyclerAdapter被实例化的时候实现 
        mOnItemClickListener.onItemClick(v, getItemCount()); 
      } 
    } 
  } 
  @Override 
  public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View views= LayoutInflater.from(parent.getContext()).inflate( 
        R.layout.rc_item,parent,false); 
    return new ViewHolder(views); 
  } 
 
  @Override 
  public void onBindViewHolder(ViewHolder holder, int position) { 
    //建立起ViewHolder中试图与数据的关联 
     holder.tvViewHolder.setText(mData.get(position)+position); 
  } 
 
  @Override 
  public int getItemCount() { 
    return mData.size(); 
  } 
} 

activity_main:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
  xmlns:android="http://www.easck.com/apk/res/android" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:orientation="vertical" 
  android:paddingBottom="@dimen/activity_vertical_margin" 
  android:paddingLeft="@dimen/activity_horizontal_margin" 
  android:paddingRight="@dimen/activity_horizontal_margin" 
  android:paddingTop="@dimen/activity_vertical_margin" 
  > 
 
  <android.support.v7.widget.RecyclerView 
    android:id="@+id/rc_main" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1"> 
  </android.support.v7.widget.RecyclerView> 
 
  <LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
 
    <Spinner 
      android:id="@+id/sp_main" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 
 
    <Button 
      android:id="@+id/btn_main_add" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/add"/> 
 
    <Button 
      android:id="@+id/btn_main_del" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/del"/> 
 
  </LinearLayout> 
</LinearLayout>