Recycler

来源:互联网 发布:js同时获取多个id 编辑:程序博客网 时间:2024/06/12 22:45
    RecyclerView    在v7包下    compile 'com.android.support:recyclerview-v7:25.3.1'    compile 'com.android.support:cardview-v7:25.3.1'    需要导入的依赖            布局<android.support.v4.widget.SwipeRefreshLayout    android:id="@+id/Swipe"    android:layout_width="match_parent"    android:layout_height="match_parent">    <android.support.v7.widget.RecyclerView    android:id="@+id/Recycler"    android:layout_width="match_parent"    android:layout_height="match_parent"></android.support.v7.widget.RecyclerView></android.support.v4.widget.SwipeRefreshLayout>    这样可以系统自带下拉刷新    http://blog.csdn.net/u012124438/article/details/53495951    适配器继承这个类 RecyclerView.Adapter    代码里 线性布局和相对布局    LinearLayoutManager linear = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);    GridLayoutManager grid = new GridLayoutManager(this, 3);    布局管理器recycler.setLayoutManager(grid);    设置进度条颜色swipe.setColorSchemeColors(Color.RED, Color.BLUE, Color.YELLOW);    添加分隔线recycler.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));    自定义View下划线的写法  onDraw方法  onDrawOver方法——是在数据上面            自定义下划线的类自定义的写法    public class MyDivider extends RecyclerView.ItemDecoration {        private Context pContext;        private final int widthPixels;        public MyDivider(Context context) {            this.pContext = context;            //获取手机屏幕的整个宽度            DisplayMetrics bm = new DisplayMetrics();            ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(bm);            widthPixels = bm.widthPixels;        }        @Override        public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {            super.onDraw(c, parent, state);            //画笔            Paint paint = new Paint();            paint.setColor(Color.BLACK);//        c.drawCircle(300, 400, 100, paint);//        c.clipRect(0,100,1000,110);//        c.drawRect(rectF,paint);            //找到总的Item的条目数            int childCount = parent.getChildCount();            for (int i = 0; i < childCount; i++) {                //获取每一个item控件视图                View childAt = parent.getChildAt(i);                //获取控件的左位置和下位置                int right = childAt.getRight();                int top = childAt.getTop();                int left = childAt.getLeft();                int bottom = childAt.getBottom();                //矩形图片                RectF rectF = new RectF(left, bottom, widthPixels, bottom + 6);                c.drawRect(rectF, paint);            }        }        //在上面        @Override        public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {            super.onDrawOver(c, parent, state);        }    }---------------------------------------------------    LayoutManager: 管理RecyclerView的结构.            Adapter: 处理每个Item的显示.            ItemDecoration: 添加每个Item的装饰.            ItemAnimator: 负责添加\移除\重排序时的动画效果.    class MyViewHolder extends RecyclerView.ViewHolder {        private final ImageView image;        private final TextView textview;        public MyViewHolder(View itemView) {            super(itemView);            image = (ImageView) itemView.findViewById(R.id.item_image);            textview = (TextView) itemView.findViewById(R.id.item_text);        }        public RecycleAdapter(Context context) {            this.mcontext = context;        }        @Override        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {            View inflate = View.inflate(mcontext, R.layout.item, null);            MyViewHolder holder = new MyViewHolder(inflate);            return holder;        }        @Override        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {            MyViewHolder vh = (MyViewHolder) holder;            vh.textview.setText(list.get(position).getTitle());            mhomePresent.getImage(vh.image,list.get(position).getThumbnail_pic_s());        }        @Override        public int getItemCount() {            return list.size();        }        public void setDatas(HomeBean homeBean) {            if (homeBean != null) {                this.list.addAll(homeBean.getResult().getData());            }        }    }}package com.baway.myrecycleview.view.activity;        import android.graphics.Color;        import android.support.v4.widget.SwipeRefreshLayout;        import android.support.v7.app.AppCompatActivity;        import android.os.Bundle;        import android.support.v7.widget.DividerItemDecoration;        import android.support.v7.widget.GridLayoutManager;        import android.support.v7.widget.LinearLayoutManager;        import android.support.v7.widget.RecyclerView;        import android.support.v7.widget.StaggeredGridLayoutManager;        import com.baway.myrecycleview.R;        import com.baway.myrecycleview.mondel.HomeBean;        import com.baway.myrecycleview.present.HomePresent;        import com.baway.myrecycleview.present.MyDivider;        import com.baway.myrecycleview.view.adapter.RecycleAdapter;        import com.baway.myrecycleview.view.iview.HomeView;public class MainActivity extends AppCompatActivity implements HomeView<HomeBean>, SwipeRefreshLayout.OnRefreshListener {    private SwipeRefreshLayout swipeRefreshLayout;    private RecyclerView recyclerView;    private HomePresent homePresent;    private RecycleAdapter adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initData();    }    private void initData() {        swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swiperefresh_layout);        recyclerView = (RecyclerView) findViewById(R.id.recycler_view);        homePresent = new HomePresent();        homePresent.attachView(this);//        LinearLayoutManager manager = new LinearLayoutManager(this);        GridLayoutManager manager = new GridLayoutManager(this, 3);//        StaggeredGridLayoutManager manager=new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.HORIZONTAL);        recyclerView.setLayoutManager(manager);        swipeRefreshLayout.setColorSchemeColors(Color.RED, Color.GREEN);        adapter = new RecycleAdapter(MainActivity.this);        adapter.setpresent(homePresent);        recyclerView.setAdapter(adapter);        recyclerView.addItemDecoration(new MyDivider(this));        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {            @Override            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {                super.onScrolled(recyclerView, dx, dy);                LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();                int itemCount = layoutManager.getItemCount();                int lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition();                if (lastVisibleItemPosition + 1 == itemCount) {                    swipeRefreshLayout.setRefreshing(true);                }            }        });        //添加分割线        recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));        homePresent.setData(HomeBean.class);    }    @Override    public void callBack(HomeBean homeBean) {        adapter.setDatas(homeBean);        adapter.notifyDataSetChanged();    }    @Override    public void onRefresh() {        swipeRefreshLayout.setRefreshing(false);    }}