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); }}
阅读全文
0 0
- RECYCLER
- Recycler
- Recycler View
- Recycler+cardsview
- Recycler View
- Okhttp+Recycler
- ListView之Recycler机制
- recycler添加ripple效果
- Recycler自定义组件二
- Android Recycler的使用
- Recycler的一些笔记
- recycler'View的使用
- Recycler实现瀑布流
- RecyclerView机制分析: Recycler
- Recycler.Adapter自动化配置
- Recycler缓存机制
- recycler视频播放
- Recycler的使用
- Web基础之与Listener的第一次接触
- 李宏毅机器学习课程笔记9:Recurrent Neural Network
- 1049. Counting Ones (30)
- es6常用特性学习总结
- (假API)后台API没有设计好之前,前端开发用假API不失进度进行数据层开发
- Recycler
- POSIX线程同步
- PHP验证码不显示
- 神经机器翻译(Neural Machine Translation)系列教程
- 动态规划:HDU2844-Coins(多重背包的二进制优化)
- 系统数据字典数据模型设计
- Q_DECLARE_PRIVATE与Q_DECLARE_PUBLIC
- 006
- 单例模式