RecyclerView万能适配器以及点击事件
2016-08-30 18:58
453 查看
首先是ViewHolder类,RecyclerHolder.java
接下来是适配器RecyclerAdapter.java类
最后是为RecyclerView设置适配器和点击事件
public class RecycleHolder extends RecyclerView.ViewHolder { /** 用于存储当前item当中的View */ private SparseArray<View> mViews; public RecycleHolder(View itemView) { super(itemView); mViews = new SparseArray<View>(); } public <T extends View> T findView(int ViewId) { View view = mViews.get(ViewId); //集合中没有,则从item当中获取,并存入集合当中 if (view == null) { view = itemView.findViewById(ViewId); mViews.put(ViewId, view); } return (T) view; } public RecycleHolder setText(int viewId, String text) { TextView tv = findView(viewId); tv.setText(text); return this; } public RecycleHolder setText(int viewId, int text) { TextView tv = findView(viewId); tv.setText(text); return this; } public RecycleHolder setImageResource(int viewId, int ImageId) { ImageView image = findView(viewId); image.setImageResource(ImageId); return this; } public RecycleHolder setImageBitmap(int viewId, Bitmap bitmap) { ImageView imageView= findView(viewId); imageView.setImageBitmap(bitmap); return this; } public RecycleHolder setImageNet(int viewId, String url) { final ImageView imageView= findView(viewId); //使用你所用的网络框架等,这里使用imageloader ImageLoader.getInstance().loadImage(url, new SimpleImageLoadingListener() { @Override public void onLoadingComplete(String imageUri, View view,Bitmap loadedImage) { super.onLoadingComplete(imageUri, view, loadedImage); imageView.setImageBitmap(loadedImage); } }); return this; } }
接下来是适配器RecyclerAdapter.java类
public abstract class RecyclerAdapter<T> extends RecyclerView.Adapter<RecycleHolder> { private Context mContext; private List<T> mDatas; private int mLayoutId; private LayoutInflater mInflater; private OnItemClickListener onItemClickListener; public RecyclerAdapter(Context mContext, List<T> mDatas, int mLayoutId) { this.mContext = mContext; this.mDatas = mDatas; this.mLayoutId = mLayoutId; mInflater = LayoutInflater.from(mContext); } @Override public RecycleHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new RecycleHolder(mInflater.inflate(mLayoutId, parent, false)); } @Override public void onBindViewHolder(final RecycleHolder holder, int position) { convert(holder, mDatas.get(position), position); if (onItemClickListener != null) { //设置背景 Log.i("TAG","点击"); //holder.itemView.setBackgroundResource(R.drawable.recycler_bg); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //注意,这里的position不要用上面参数中的position,会出现位置错乱\ onItemClickListener.OnItemClickListener(holder.itemView, holder.getLayoutPosition()); } }); } } public abstract void convert(RecycleHolder holder, T data, int position); @Override public int getItemCount() { return mDatas.size(); } public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.onItemClickListener = onItemClickListener; } public interface OnItemClickListener { void OnItemClickListener(View view, int position); } }
最后是为RecyclerView设置适配器和点击事件
mainRecyclerView.setAdapter(adapter = new RecyclerAdapter<HuaBean>(MainActivity.this, huaBeanList, R.layout.item_main_recycler) { @Override public void convert(RecycleHolder holder, HuaBainListBean huaBainListBean,int position) { holder.setText(R.id.item_main_recycler_title, huaBainListBean.getTitle()); holder.setText(R.id.item_main_recycler_time, huaBainListBean.getCtime()); final String newsUrl = huaBainListBean.getUrl(); newsUrlList.add(newsUrl); String picUrl = huaBainListBean.getPicUrl(); holder.setImageNet(R.id.item_main_recycler_image,picUrl); } }); adapter.setOnItemClickListener(new RecyclerAdapter.OnItemClickListener() { @Override public void OnItemClickListener(View view, int position) { String url=newsUrlList.get(position); Intent intent=new Intent(MainActivity.this,SecondActivity.class); intent.putExtra("chooseUrl",url); startActivity(intent); } }); }
相关文章推荐
- 为RecyclerView打造万能适配器,点击事件,5.0水波纹点击效果
- RecyclerView万能适配器,点击事件,分割线,间距等写法
- RecyclerView万能适配器加强版———可选择添加头和尾(含点击事件)
- Android实现RecyclerView自定义列表、点击事件以及下拉刷新
- recyclerview点击事件以及toolbar使用
- Android-UI布局---RecyclerView学习(一)在适配器中自定义长按和点击事件
- 关于recyclerview的横向布局的宽度以及item的点击事件的添加
- Android使用RecyclerView实现自定义列表、点击事件以及下拉刷新
- RecyclerView的使用以及下拉刷新自动加载(添加点击事件、头部)
- recyclerview万能适配器用法以及源码分析
- RecyclerView的使用 以及RecyclerView的自定义点击事件
- 手机商城第五天,用recyclerview设置秒杀区域的布局,以及为该recyclerview设置item级的点击事件
- RecycleView的通用适配器BaseQuickAdapter处理item中子控件的点击事件以及cardview卡片阴影
- Android适配器之 V7扩展包 RecyclerView 的使用以及万能适配器的封装实现
- Android实现RecyclerView自定义列表、点击事件以及下拉刷新
- RecyclerView 添加头部和尾部,并实现Item的点击事件
- 一个小应用解析webview,adapter,以及listview中item点击事件
- RecyclerView点击事件、加载不同布局
- RecyclerView Item 的点击事件
- android RecyclerView响应点击事件(二)