zoukankan      html  css  js  c++  java
  • RecyclerView使用方法总结

    RecyclerView( android.support.v7.widget.RecyclerView)是安卓新推出的一个滑动组件,感觉是用来替代ListView实现更多的效果,使用时和ListView相比也是不同,这里记录下用法:

    1、线性布局(LinearLayoutManager):

     首先是确定布局类型,使用LinearLayoutManager来定义:

    LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
    mRecyclerView.setLayoutManager(mLayoutManager);

    下来是设置Adapter,和ListView的不同,RecyclerView必须自定义一个RecyclerView.Adapter来实现:

    //recylerview的数据适配器
    class mRecyclerViewAdapter extends RecyclerView.Adapter<mRecyclerViewAdapter.ViewHolder>{
    
        
        // 自定义内部的ViewHolder
        public static class ViewHolder extends RecyclerView.ViewHolder {
            
            public TextView mTextView;
    
            public ViewHolder(View v) {
                super(v);
             mTextView = (TextView) v.findViewById(R.id.showtext); 
            }
        }
    
        private ArrayList<String> mArryList;
    
        private Context mContext;
     
        public mRecyclerViewAdapter(Context context,ArrayList<String> list){
            mContext = context;
            mArryList = list;
        }
    
        @Override
        public int getItemCount() {
            // TODO Auto-generated method stub
            return mArryList.size();
        }
    
        @Override
        public void onBindViewHolder(ViewHolder holder, int pos) {
             holder.mTextView.setText(mArryList.get(pos));
        }
    
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup arg0, int arg1) {
            View v = LayoutInflater.from(mContext).inflate(
                    R.layout.recyleview_item_layout, null);
            final ViewHolder vh = new ViewHolder(v);
            return vh;
        }
    }

     点击事件的实现:将内部点击事件通过接口传递到外部:

     定义接口:

    interface OnRecyclerViewItemClickListener {
        void onRecyclerClick(View view, int pos);
    }

     adapter内部定义接口实例:

        private OnRecyclerViewItemClickListener mOnItemClickListener = null;
        public void setmOnItemClickListener(
                OnRecyclerViewItemClickListener mOnItemClickListener) {
            this.mOnItemClickListener = mOnItemClickListener;
        }

    adapter内部View事件绑定:

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int arg1) {
           //注意这里要传入parent元素,否则V的宽度无法math_parent
    View v
    = LayoutInflater.from(mContext).inflate( R.layout.recyleview_item_layout, parent ,false);
    final ViewHolder vh = new ViewHolder(v); v.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mOnItemClickListener != null) { mOnItemClickListener.onRecyclerClick(v, vh.getPosition()); } } }); return vh; } }

     外部调用:

    final mRecyclerViewAdapter mrecyleadapter = new mRecyclerViewAdapter(testList, this);
            mRecyclerViewAdapter 
                    .setOnItemClickListener(new OnRecyclerViewItemClickListener() {
                        @Override
                        public void onRecyclerClick(View view, int pos) {
                              dowhat...
                        }
                    });

     待续...

  • 相关阅读:
    POJ2442 Sequence
    等式
    GYM101635E Ingredients
    单片机之PID算法
    信号完整性一
    C程序编程规范一
    FATFS文件系统的移植
    FreeRTOS移植到STM32上的移植过程
    codeblocks+SDCC开发51单片机
    java5种打印数组
  • 原文地址:https://www.cnblogs.com/hack132/p/5032341.html
Copyright © 2011-2022 走看看