android 5.0新特性,recyclerview的基本用法,及应注意的问题
来源:互联网 发布:seo标题 编辑:程序博客网 时间:2024/05/01 08:38
Android5.0新特性 recyclerview的基本用法
1,导入recyclerview的包,有两种方式
(1) 直接在build.gradle文件中添加一句话:
dependencies { compile 'com.android.support:recyclerview-v7:23.1.1'}
(2)file--project structure--app---dependencies搜索com.android.support:recyclerview-v7包,点击加号添加
2,在xml中设置
这种写法是正确的,
<android.support.v7.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content"/>
但有的人会写成如下这样,像我, 刚开始 用时直接这样用,会出现一个问题:
ClassNotFoundException: Didn't find class "android.view.RecyclerView"。。。
如果这样写程序运行时会在view下寻找recyclerview,当然会找不到了、。。
<span style="font-size:18px;"><RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content"/></span>
3,Activity中定义
使用recyclerview时,需要setlayoutManager,这一句话决定了到底是网格布局还是线性布局,
mRecyclerView = (RecyclerView) findViewById(R.id.recycler); GridLayoutManager manager = new GridLayoutManager(getApplicationContext(),4); mRecyclerView.setLayoutManager(manager);
这代表是网格布局
<span style="font-size:18px;">LinearLayoutManager manager = new LinearLayoutManager(getApplicationContext(),LinearLayoutManager.VERTICAL,true);mRecyclerView.setLayoutManager(manager);</span>
这样写就是线性布局,使用线性布局时ayoutmanager构造器的第一个参数为上下文,第二个参数为是垂直还是水平,第三个参数代表了是 倒序排列还是正序排列
4,为recyclerview设置适配器adpter
我想让recyclerview实现imageview+button+textview交替排列,代码如下
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener { private Context mContext; private List<String> mList; public MyAdapter(Context mContext, List<String> list) { this.mContext = mContext; this.mList = list; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view; switch (viewType) { case Types.TEXTTYPE: view = View.inflate(mContext, R.layout.layout_item_text, null); return new TextViewHolder(view); case Types.BUTTONTYPE: view = View.inflate(mContext, R.layout.layout_item_button, null); return new ButtonViewHolder(view); case Types.IMGTYPE: view = View.inflate(mContext, R.layout.layout_item_image, null); return new ImgViewHolder(view); default: return null; } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof TextViewHolder) { TextViewHolder textHolder = (TextViewHolder) holder; textHolder.mText.setText(mList.get(position)+"\n"+"text"+position); }else if (holder instanceof ButtonViewHolder){ ButtonViewHolder buttonViewHolder = (ButtonViewHolder) holder; buttonViewHolder.mButton.setText(mList.get(position)+"\n"+"button"+position); }else if (holder instanceof ImgViewHolder){ ImgViewHolder imgViewHolder = (ImgViewHolder) holder; imgViewHolder.mImage.setBackgroundResource(R.mipmap.ic_launcher); } } @Override public int getItemCount() { int count; count = mList.size(); return count; } @Override public int getItemViewType(int position) { switch (position % 3) { case 0: return Types.IMGTYPE; case 1: return Types.BUTTONTYPE; case 2: return Types.TEXTTYPE; default: return super.getItemViewType(position); } } @Override public void onClick(View v) { } private static class Types { private static final int TEXTTYPE = 2; private static final int BUTTONTYPE = 1; private static final int IMGTYPE = 0; } private class TextViewHolder extends RecyclerView.ViewHolder { TextView mText; public TextViewHolder(View itemView) { super(itemView); mText = (TextView) itemView.findViewById(R.id.text); } } private class ButtonViewHolder extends RecyclerView.ViewHolder { Button mButton; public ButtonViewHolder(View itemView) { super(itemView); mButton = (Button) itemView.findViewById(R.id.button); } } private class ImgViewHolder extends RecyclerView.ViewHolder { ImageView mImage; public ImgViewHolder(View itemView) { super(itemView); mImage = (ImageView) itemView.findViewById(R.id.image); } }}
接下来看效果图吧
这是线性布局,当线性布局的第三个参数为true时,倒序排列
这是表格布局
这是线性布局,当第三个参数为false时,正序排列
2 0
- android 5.0新特性,recyclerview的基本用法,及应注意的问题
- Android RecyclerView的基本用法
- android RecyclerView的基本介绍及用法(一)
- 应注意的问题
- iOS9新特性需要注意的问题
- 学习Android 应注意的十个问题
- final的用法及应注意的地方
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- SpringSecurity初识
- 排名函数(ROW_NUMBER、RANK、DENSE_RANK)及OVER子句
- gradle批量打包Android apk:不同的包使用不同的icon、label
- vs2013中如何打开asp.net配置页面
- Ebay架构特点(HPTS 2009)
- android 5.0新特性,recyclerview的基本用法,及应注意的问题
- Android调用JNI的进阶实例(摄像头预览数据转码RGB播放)
- 大型网站技术架构Tips
- 1055. The World's Richest (25)【排序】——PAT (Advanced Level) Practise
- struts2+jquery.ajax+json实现用户登陆,报错org.apache.struts2.json.JSONException:解决办法
- 利用jquery函数submit()提交表单注意事项
- Html判断客户端使用的Android还是Ios
- Java多线程简单介绍-1
- 010 MATLAB奇淫技巧之实现图片扫描