RecyclerView万能适配器以及点击事件
来源:互联网 发布:题目医院数据库 编辑:程序博客网 时间:2024/06/10 02:10
首先是ViewHolder类,RecyclerHolder.java
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); } });}
0 0
- RecyclerView万能适配器以及点击事件
- RecyclerView万能适配器,点击事件,分割线,间距等写法
- 为RecyclerView打造万能适配器,点击事件,5.0水波纹点击效果
- recyclerview万能适配器用法以及源码分析
- RecyclerView万能适配器加强版———可选择添加头和尾(含点击事件)
- 万能RecyclerView适配器
- recyclerView 的万能适配器
- RecyclerView的万能适配器
- 为RecyclerView打造万能适配器
- 万能适配器 listview gridview RecyclerView
- 打造RecyclerView的万能适配器
- Android打造万能适配器--RecyclerView
- RecyclerView 万能适配器的抽取
- Databinding打造RecyclerView万能适配器
- recyclerview点击事件以及toolbar使用
- RecyclerView的使用 以及RecyclerView的自定义点击事件
- Data Binding 打造RecyclerView 万能适配器
- PowerfulRecyclerViewAdapter:一种RecyclerView的万能适配器实现
- YYKit系列之——YYModel使用
- cocosjs与安卓原生集成
- 移动端的分页缓存
- 【模拟】NEERC15 G Generators (Codeforces GYM 100851)
- Hadoop HA 架构
- RecyclerView万能适配器以及点击事件
- matplotlib用断裂的坐标轴表示无穷
- jmeter中请求文件数据太大使jmeter运行缓慢甚至无响应的解决办法
- At Commands:从白痴到大师的修炼历程(二)
- Sublime + PlantUML
- new Date时间戳(练习)
- Centos6.6如何设置中文输入法
- 数据处理——One-Hot Encoding
- codeforces_686C. Robbers' watch(dfs)