RecyclerView的使用详情
来源:互联网 发布:游族网络 被告 编辑:程序博客网 时间:2024/05/18 13:48
RecyclerView作为替代Listview的最佳选择,用户可以通过修改Manager使它变成GrdiView和Listview以及实现瀑布流的效果。
<android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipe_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="16dip" android:layout_marginRight="16dip" android:layout_marginTop="5dip"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="none"> </android.support.v7.widget.RecyclerView> </android.support.v4.widget.SwipeRefreshLayout>
以上的xml代码将RecyclerView嵌套在了系统刷新控件中。免去了自定义刷新的烦恼。
而在Activity代码中,一定要设置它的Manager.
//设置LayoutManager RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity()); //GridViewManager //RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getActivity(), 3); //瀑布流Manager //RecyclerView.LayoutManager layoutManager = new StaggeredGridLayoutManager(3, OrientationHelper.VERTICAL); recycler.setLayoutManager(layoutManager);
因为RecyclerView没有实现条目点击事件,所以我们需要在Adapter适配器中定义接口实现该方法:
/** * 数据适配器 */public class ClassAdapter extends RecyclerView.Adapter<ClassAdapter.ClassViewHolder> {//数据源 private ArrayList<HashMap<String, Object>> list; private OnRecyclerViewItemClickListener mListener = null; //定义接口 public interface OnRecyclerViewItemClickListener { void onItemClick(View view, int position); } //构造函数 public ClassAdapter(ArrayList<HashMap<String, Object>> list) { this.list = list; } @Override public ClassViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_class, null); ClassViewHolder holder = new ClassViewHolder(view); return holder; } @Override public void onBindViewHolder(ClassViewHolder holder, final int position) { holder.tvClassName.setText(list.get(position).get("name").toString()); //条目点击监听实现方法,自己定义条目点击接口,通过在onBindViewHolder()方法中获得position,从而获得条目的item位置. if (mListener != null) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onItemClick(v, position); } }); } } @Override public int getItemCount() { return list.size(); } public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) { this.mListener = listener; } class ClassViewHolder extends RecyclerView.ViewHolder { private TextView tvClassName; public ClassViewHolder(View itemView) { super(itemView); tvClassName = (TextView) itemView.findViewById(R.id.tv_class_names); } }}
至此我们就可以在Activity代码中通过调用Adapter的setOnItemClickListener();实现条目点击了。
linearAdapter.setOnItemClickListener(new LinearAdapter.OnRecyclerViewItemClickListener() { @Override public void onItemClick(View view, int position) { Toast.makeText(getActivity(), lists.get(position), Toast.LENGTH_LONG).show(); } });
0 0
- RecyclerView的使用详情
- MongoDB的使用详情
- Service的详情使用
- lucene 的使用详情
- WebView的使用详情
- shiro的使用详情
- OKhttp,MVP,RecyclerView,联合使用,点击条目进入详情页
- recyclerview点击进入详情
- RecyclerView+RecyclerView.Adapter+RecyclerView.ViewHolder的使用
- iOS UISlider的使用详情
- ImageLoader的简单使用详情
- iOS UIDatePicker的使用详情
- RecyclerView的使用
- RecyclerView的使用
- RecyclerView 的使用详解
- RecyclerView的基本使用
- RecyclerView的使用
- Android -- RecyclerView的使用
- 怎样修改安卓源码5.1默认语言及语言包屏蔽方法总结
- 《React-Native系列》36、 ReactNative地图组件
- 文章标题
- 开尔文船波
- nginx负载均衡配置的几种策略
- RecyclerView的使用详情
- [慢查优化]慎用MySQL子查询,尤其是看到DEPENDENT SUBQUERY标记时
- Kelvin wakes
- C++中#define的使用方法
- 【Python】Python的单引号字符串和转义引号
- 【LeetCode】 088. Merge Sorted Array
- 微信朋友圈合伙做生意要散伙了,这个微信号值多少钱呢
- 统计Apache或nginx日志里访问次数最多的前十个IP
- flex项目从win移植到mac下,文件路径前缺少/