RecyclerView的点击事件
RecyclerView得点击事件,仅供参考
布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.wangjisen.rvdemo.MainActivity"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="RecyclerView点击事件" /> <android.support.v7.widget.RecyclerView android:id="@+id/rl_prize" android:layout_width="wrap_content" android:layout_height="76dp" android:layout_centerInParent="true"> </android.support.v7.widget.RecyclerView> </RelativeLayout>
代码
public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); intiData(); } private void initView() { recyclerView = (RecyclerView) findViewById(R.id.rl_prize); } private void intiData() { LinearLayoutManager layout = new LinearLayoutManager(this); layout.setOrientation(LinearLayoutManager.HORIZONTAL); recyclerView.setLayoutManager(layout); List list = new ArrayList(); list.add(R.mipmap.ic_launcher); list.add(R.mipmap.ic_launcher); list.add(R.mipmap.ic_launcher); list.add(R.mipmap.ic_launcher); list.add(R.mipmap.ic_launcher); list.add(R.mipmap.ic_launcher); list.add(R.mipmap.ic_launcher); list.add(R.mipmap.ic_launcher); list.add(R.mipmap.ic_launcher); list.add(R.mipmap.ic_launcher); list.add(R.mipmap.ic_launcher); RecyclerviewHorizontalJuryAdapter adapter = new RecyclerviewHorizontalJuryAdapter(this, list); RecyclerViewCallback recyclerViewCallback = new RecyclerViewCallback() { @Override public void onItemClick(View itemView, int position) { Toast.makeText(MainActivity.this,"点我:" + position,Toast.LENGTH_SHORT).show(); } }; adapter.setOnMyClickListener(recyclerViewCallback); recyclerView.setAdapter(adapter); } }
adapter
public class RecyclerviewHorizontalJuryAdapter extends RecyclerView.Adapter<RecyclerviewHorizontalJuryAdapter.ViewHloder> { private List list; private Context context; private RecyclerViewCallback callback; /** * 注册接口 */ public void setOnMyClickListener(RecyclerViewCallback callback) { this.callback = callback; } public RecyclerviewHorizontalJuryAdapter(Context context, List list) { this.context = context; this.list = list; } @Override public ViewHloder onCreateViewHolder(ViewGroup parent, int viewType) { return new ViewHloder(LayoutInflater.from(context).inflate(R.layout.rv_item, parent, false)); } @Override public void onBindViewHolder(final ViewHloder holder, final int position) { //通过itemview得到每个图片的pararms对象 RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) holder.itemView.getLayoutParams(); //设置修改参数 holder.itemView.setLayoutParams(params); holder.ivAvatar.setBackgroundResource((Integer) list.get(position)); holder.itemView.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { //当点击item时回调onItemClick函数,处理点击事件。 callback.onItemClick(view, position); } }); } @Override public int getItemCount() { return list.size(); } public class ViewHloder extends RecyclerView.ViewHolder { ImageView ivAvatar; public ViewHloder(View itemView) { super(itemView); ivAvatar = (ImageView) itemView.findViewById(R.id.iv_avatar); } } }
回调
public interface RecyclerViewCallback { public void onItemClick(View itemView, int position); }