简单说一下RecyclerView
来源:互联网 发布:revit软件插件探索者 编辑:程序博客网 时间:2024/04/20 15:23
一般情况下使用listview,gridview其实就可以满足需求啥的,如果需求经常变更的话,可以考虑使用recyclerview
感觉这个控件比listview啥的更能体现面向对象的思想,我不在乎过程,只在乎最后的结果,是吧,工作生活也一样,只看你混的好不好,不在乎你吃过多少苦,扯远了
还是老规矩,废话不多说上代码
activity
package com.fanyafeng.nested.RecyclerView;import android.os.Bundle;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.Toolbar;import android.view.View;import android.widget.LinearLayout;import com.fanyafeng.nested.BaseActivity;import com.fanyafeng.nested.R;import java.util.ArrayList;import java.util.List;public class RecyclerViewActivity extends BaseActivity { private String imageUri = "http://www.apkbus.com/data/attachment/forum/201402/27/154958qgczo5a17ia3u3c4.png";// private String imageUri = "http://img2.cache.netease.com/stock/2016/2/25/20160225133750f7294_550.png"; private RecyclerView test_recyclerview; private RecyclerView.LayoutManager layoutManager; private RecyclerViewAdapter recyclerViewAdapter; private List<String> stringList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_recycler_view); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); initView(); initData(); } private void initView() { test_recyclerview = (RecyclerView) findViewById(R.id.test_recyclerview);// layoutManager = new LinearLayoutManager(this, LinearLayout.VERTICAL, false); layoutManager = new GridLayoutManager(this, 3, GridLayoutManager.VERTICAL, false); } private void initData() { for (int i = 0; i < 21; i++) { stringList.add(imageUri); } recyclerViewAdapter = new RecyclerViewAdapter(this, stringList); test_recyclerview.setAdapter(recyclerViewAdapter); test_recyclerview.setLayoutManager(layoutManager); }}偷了一下懒,没有写bean,直接用的string当作实体
adapter
package com.fanyafeng.nested.RecyclerView;import android.content.Context;import android.net.Uri;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.fanyafeng.nested.R;import com.fanyafeng.nested.utils.MyUtils;import java.util.List;/** * Created by fanyafeng on 2016/2/25,0025. */public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewHolder> { public interface OnItemClickListener { void onItemClick(View view, int position); void onItemLongClick(View view, int position); } public OnItemClickListener onItemClickListener; public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.onItemClickListener = onItemClickListener; } public Context context; public List<String> stringList; public LayoutInflater layoutInflater; public RecyclerViewAdapter(Context context, List<String> stringList) { this.context = context; this.stringList = stringList; layoutInflater = LayoutInflater.from(context); } @Override public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = layoutInflater.inflate(R.layout.item_recycle_layout, parent, false); RecyclerViewHolder recyclerViewHolder = new RecyclerViewHolder(view); return recyclerViewHolder; } @Override public void onBindViewHolder(final RecyclerViewHolder holder, final int position) { if (onItemClickListener != null) { holder.item_simp.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onItemClickListener.onItemClick(holder.item_simp, position); } }); holder.item_simp.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { onItemClickListener.onItemLongClick(holder.item_simp, position); return true; } }); } holder.item_simp.setImageURI(Uri.parse(stringList.get(position))); holder.item_simp.setMaxWidth(MyUtils.getScreenWidth(context)); holder.item_simp.setAdjustViewBounds(true); holder.item_simp.setAspectRatio(.6f); } @Override public int getItemCount() { return stringList.size(); }}viewholder
package com.fanyafeng.nested.RecyclerView;import android.support.v7.widget.RecyclerView;import android.view.View;import com.facebook.drawee.view.SimpleDraweeView;import com.fanyafeng.nested.R;/** * Created by fanyafeng on 2016/2/25,0025. */public class RecyclerViewHolder extends RecyclerView.ViewHolder { public SimpleDraweeView item_simp; public RecyclerViewHolder(View itemView) { super(itemView); item_simp = (SimpleDraweeView) itemView.findViewById(R.id.item_simp); }}
这里的话是强制要求使用viewholder的,而且adapter中有绑定数据的相应周期,这里的话可以采用mvc模式理解一下,这里的controller功能强大,但是adapter中需要自己定义相应的click接口,网上资料不是多,有的问题需要看源码比如手势拦截,就踩到坑里了这个功能是强大,但是用到自己的项目里是否合适还是需要大家斟酌
Everynight the littlepeople would waddle home , full of Cheese , and every morningthey would confidently retrun for more.
0 0
- 简单说一下RecyclerView
- 简单说一下线程池
- 简单说一下编译ijkplayer
- 题外话----简单说一下学习方法
- 简单说一下fragment,以及一些误区
- MFC 消息截取简单说一下
- xml(简单的说一下xml)
- 今天简单说一下cdc 的使用
- [例子向]简单说一下设计模式
- 简单说一下Nginx配置说明
- 简单说一下测试人员在开发中的作用
- 简单说一下我对这个CRM系统的设计方案
- 简单说一下MSDOS分区的几个要点
- 简单的说一下VC++多线程的实现
- 简单说一下const在各个位置的含义
- 简单说一下java中计时器,实际需要,没有详解
- 大型网站软件系统的简单说一下
- 简单说一下上线前apk加密的问题
- Swift iOS项目archive操作会报错误built without full bitcode解决方法
- 很好的python 学习网站
- 播放视频
- Android手机自动化测试工具介绍
- java 缓存
- 简单说一下RecyclerView
- CentOS6.7 RabbitMQ的安装和配置
- Android分享:如何高效率开发App
- osg 自己写地面操作器
- andriod SnackBar使用
- cmake 与 make
- Oracle OS备份了解
- 搭建mysql主从数据库实现双机热备架构
- Android中文件选择器的实现