zoukankan      html  css  js  c++  java
  • Android开发学习--RecycleView入门

    该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,例如:ListView、GridView

    通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现令人瞠目的效果。

    • 你想要控制其显示的方式,请通过布局管理器LayoutManager
    • 你想要控制Item间的间隔(可绘制),请通过ItemDecoration
    • 你想要控制Item增删的动画,请通过ItemAnimator
    • 你想要控制点击、长按事件,请自己写

    activity_main.xml

    <?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.support.v7.widget.RecyclerView
            android:id="@+id/id_recyclerview_horizontal"
            android:layout_width="match_parent"
            android:layout_height="120dp"
            android:layout_centerVertical="true"
            android:scrollbars="none"
             />
    </RelativeLayout>

    item.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="120dp"
        android:layout_height="120dp">
        <ImageView
            android:id="@+id/iv"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_margin="5dp"
            android:scaleType="centerCrop"/>
        <TextView
            android:id="@+id/tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/iv"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp"
            android:text="some info"
            android:textSize="12dp"
            />
    
    </RelativeLayout>

    MainActivity.java

    public class MainActivity extends AppCompatActivity {
    
        private RecyclerView mRV;
        private List<Integer> mDatas;
        private GalleryAdapter madapter;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initData();
            mRV = (RecyclerView) findViewById(R.id.id_recyclerview_horizontal);
            LinearLayoutManager li = new LinearLayoutManager(this);
            li.setOrientation(LinearLayoutManager.HORIZONTAL);
            mRV.setLayoutManager(li);//设置布局管理器
    
            madapter = new GalleryAdapter(this,mDatas);
            mRV.setAdapter(madapter);//设置adapter
        }
        private void initData(){
            mDatas = new ArrayList<Integer>(Arrays.asList(R.drawable.a,
                    R.drawable.b, R.drawable.c, R.drawable.e,
                    R.drawable.f, R.drawable.g));
        }
    
    
    }
    GalleryAdapter.java
    public class GalleryAdapter extends RecyclerView.Adapter<GalleryAdapter.ViewHolder> {
        private LayoutInflater mInflter;
        private List<Integer> mdatas;
    
        public GalleryAdapter(Context context, List<Integer> datas){
            mInflter = LayoutInflater.from(context);
            mdatas = datas;
        }
    
        /**
         * 我们创建的ViewHolder必须继承RecyclerView.ViewHolder,这个RecyclerView.ViewHolder的
         * 构造时必须传入一个View,这个View相当于我们ListView getView中的convertView
         * (即:我们需要inflate的item布局需要传入)。
         */
        public class ViewHolder extends RecyclerView.ViewHolder{
            public ViewHolder(View v){
                super(v);
            }
    
            ImageView miv;
            TextView mtv;
    
        }
    
    
        //创建ViewHoler
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = mInflter.inflate(R.layout.item,parent,false);
            ViewHolder viewHolder = new ViewHolder(view);
            viewHolder.miv = (ImageView) view.findViewById(R.id.iv);
    
            return viewHolder;
        }
    
        //设置值;将数据绑定至viewholder
        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
    
            holder.miv.setImageResource(mdatas.get(position));
    
        }
    
        //有多少条数据
        @Override
        public int getItemCount() {
            return mdatas.size();
        }
    
    
    
    }
  • 相关阅读:
    一致性哈系算法
    进程通信,线程通信,同步方式
    token的作用
    PHP与web 页面交互
    PHP !!
    Vue局部组件和全局组件
    vue父子组件之间的通信
    Spring Cloud 微服务架构学习笔记与示例
    feign中开启熔断的书写步骤
    使用springboot配置和注入数据源属性的方法和步骤
  • 原文地址:https://www.cnblogs.com/mengxiao/p/7152070.html
Copyright © 2011-2022 走看看