安卓的Recyclerview,CradView
来源:互联网 发布:50而知天命的英文翻译 编辑:程序博客网 时间:2024/05/17 03:53
最近项目不是特别紧张,所以闲下来看了一下安卓的Recyclerview和CradView这俩东东,Recyclerview是安卓新出的一个组件,用来取代我们用了很久的ListView,直接上代码吧
AS中如果想使用这个组件1,首先需要在gradle 文件里面加上 compile 'com.android.support:recyclerview-v7:21.+'compile 'com.android.support:cardview-v7:21.+'testCompile 'junit:junit:4.12'compile 'com.google.android.gms:play-services-appindexing:8.4.0'
配置上这些后咱们就可以接着写了
2,我们在xml文件中可以把这个组件写进去
<android.support.v7.widget.RecyclerView android:id="@+id/id_view" android:divider="#ffff0000" android:dividerHeight="10dp" android:layout_width="match_parent" android:layout_height="match_parent" /><android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="120dp" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_marginBottom="2dp" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_marginTop="2dp" app:cardCornerRadius="5dp" app:elevation="1dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="100dp" android:id="@+id/itemView" android:padding="5dp" > <ImageView android:id="@+id/pic" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" android:scaleType="centerCrop" /> <TextView android:clickable="true" android:id="@+id/name" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="10dp" android:layout_marginRight="10dp" android:gravity="right|bottom" android:textColor="@android:color/white" android:textSize="24sp" /> </LinearLayout></android.support.v7.widget.CardView>
3,在我们要写的activity里面设置上相应的一些属性
mRecyclerView = (RecyclerView) findViewById(R.id.id_view); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.setAdapter(mAdapter = new HomeAdapter(this, actors)); //设置固定大小 mRecyclerView.setHasFixedSize(true); //创建线性布局 mLayoutManager = new LinearLayoutManager(this); //垂直方向 mLayoutManager.setOrientation(OrientationHelper.VERTICAL); //给RecyclerView设置布局管理器 mRecyclerView.setLayoutManager(mLayoutManager);
4,主要是适配器 下面咱们看适配的代码
public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.ViewHolder>{ private List<Actor> actors; private Context mContext; public interface OnItemClickLitener { void onItemClick(View view, int position); void onItemLongClick(View view , int position); } private OnItemClickLitener mOnItemClickLitener; public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener) { this.mOnItemClickLitener = mOnItemClickLitener; } public HomeAdapter(Context context , List<Actor> actors) { this.mContext = context; this.actors = actors; } @Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i ) { // 给ViewHolder设置布局文件 View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.toolbar, viewGroup, false); return new ViewHolder(v); } @Override public void onBindViewHolder( final ViewHolder viewHolder, int i ) { // 给ViewHolder设置元素 Actor p = actors.get(i); viewHolder.mTextView.setText(p.name); viewHolder.mImageView.setImageDrawable(mContext.getDrawable(p.getImageResourceId(mContext)));// // 如果设置了回调,则设置点击事件 if (mOnItemClickLitener != null) { viewHolder.linearLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int pos = viewHolder.getPosition();// int pos = viewHolder.getLayoutPosition(); mOnItemClickLitener.onItemClick(viewHolder.itemView, pos); } }); } viewHolder.linearLayout.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) {// int pos = viewHolder.getLayoutPosition(); int pos = viewHolder.getPosition(); mOnItemClickLitener.onItemLongClick(viewHolder.itemView, pos); return false; } }); } @Override public int getItemCount() { // 返回数据总数 return actors == null ? 0 : actors.size(); } // 重写的自定义ViewHolder public static class ViewHolder extends RecyclerView.ViewHolder { public TextView mTextView; public LinearLayout linearLayout; public ImageView mImageView; public ViewHolder( View v ) { super(v); linearLayout = (LinearLayout)v.findViewById(R.id.itemView); mTextView = (TextView) v.findViewById(R.id.name); mImageView = (ImageView) v.findViewById(R.id.pic); } }}
5,相信你们一定会问item的点击事件怎么写,上面的适配器代码,我已经写了接口,所以我们只要在activity里面实现就行了
mAdapter.setOnItemClickLitener(new HomeAdapter.OnItemClickLitener() { @Override public void onItemClick(View view, int position) { Toast.makeText(MainActivity.this, position + " click", Toast.LENGTH_SHORT).show(); } @Override public void onItemLongClick(View view, int position) { Toast.makeText(MainActivity.this, position + " long click", Toast.LENGTH_SHORT).show(); } });
OK了,就讲到这里吧,有问题的童鞋请留言~希望和大家多多交流
工程下载地址:http://download.csdn.net/detail/liwei123liwei123/9576727
0 0
- 安卓的Recyclerview,CradView
- 安卓RecyclerView的用法
- 安卓开发 RecyclerView的点击事件
- 安卓RecyclerView的简单实用
- 安卓Recyclerview
- 安卓学习---RecyclerView
- 安卓 RecyclerView
- 总结一下 Material Design控件 cradview 的用法
- 安卓RecyclerView使用教程
- 安卓学习笔记---RecyclerView的五大开源项目-解决办法
- 安卓学习笔记---android RecyclerView一个通用的BaseAdapter
- 安卓Recyclerview 两种type的解决方法
- 安卓RecyclerView与DrawerLayout的简单应用
- React Native之调用安卓的原生控件recyclerview
- 安卓v7包中的RecyclerView的基本使用
- 安卓高级控件3之RecyclerView的使用
- 安卓高级控件3之RecyclerView的使用
- 安卓RecyclerView的使用以及抽取基类
- java 单利模式
- mysql 行转列,套路版
- [Leetcode] Container With Most Water 能装最大水的容量
- python中运行其他python
- Android Intent Activity 跳转几种情况所使用的不同方法
- 安卓的Recyclerview,CradView
- java+myeclipse 编程日志
- 最小生成树算法
- 对死锁的探究
- SQL内置函数
- 杭电ACM 1000
- 中国的残疾人都到哪里去了?
- JavaSE学习笔记之-----面向对象
- 从MySQL中态读取、添加CAD文件