什么是RecyclerView?个人理解,它是一个在数据量大的时候,为了显示在界面上提供的灵活高效处理的控件。可以替代listview,gallery,gridview等控件。( 这个是复制的,可以忽略。。。)

因为这个是在android 在2014 的goole io大会说的,所以呢整个sdk 最起码更新到 21版本吧。

这样才有android-support-v7-recyclerview.jar 这个包。

看下项目结构

下面就简单的上代码了

activity_main.xml

<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.ngh.recucler.MainActivity"><android.support.v7.widget.RecyclerViewandroid:id="@+id/recycle"android:layout_width="match_parent"android:layout_height="match_parent"/></RelativeLayout>

list_item.xml

<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ImageViewandroid:id="@+id/iv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:src="@drawable/ic_launcher"/><TextViewandroid:id="@+id/tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_marginRight="10dp"/></RelativeLayout>

MainActivity.java

packagecom.ngh.recucler;importjava.util.ArrayList;importcom.ngh.recucler.adapter.RecyleAdapter;importcom.ngh.recucler.adapter.RecyleAdapter.OnRecyclerViewItemClickListener;importandroid.app.Activity;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.os.Bundle;importandroid.support.v7.widget.LinearLayoutManager;importandroid.support.v7.widget.RecyclerView;importandroid.support.v7.widget.RecyclerView.OnItemTouchListener;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.MotionEvent;importandroid.view.View;importandroid.widget.Toast;/***测试界面**@authorngh**2015年5月23日*/publicclassMainActivityextendsActivity{privateRecyclerViewrecycle;privateRecyleAdapteradapter;privateArrayList<String>list=newArrayList<String>();@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);recycle=(RecyclerView)findViewById(R.id.recycle);LinearLayoutManagermanager=newLinearLayoutManager(this);manager.setOrientation(LinearLayoutManager.VERTICAL);//横滑,还是竖滑recycle.setLayoutManager(manager);//设置布局管理器initData();adapter=newRecyleAdapter(list,this);recycle.setAdapter(adapter);/*设置单个item的点击事件*/adapter.setListener(newOnRecyclerViewItemClickListener(){@OverridepublicvoidonClick(Viewview,intposition){Toast.makeText(getBaseContext(),list.get(position),0).show();}});/***绘制listView的间隔线*/recycle.addItemDecoration(newRecyclerView.ItemDecoration(){Paintpaint=newPaint();@OverridepublicvoidonDraw(Canvasc,RecyclerViewparent,RecyclerView.Statestate){super.onDraw(c,parent,state);}@OverridepublicvoidonDrawOver(Canvasc,RecyclerViewparent,RecyclerView.Statestate){super.onDrawOver(c,parent,state);paint.setColor(Color.LTGRAY);for(inti=0,size=parent.getChildCount();i<size;i++){Viewchild=parent.getChildAt(i);c.drawLine(child.getLeft(),child.getBottom(),child.getRight(),child.getBottom(),paint);}}});//可以提高效率recycle.setHasFixedSize(true);}/***添加测试数据*/privatevoidinitData(){for(inti=0;i<1000;i++){list.add("这是测是数据。。。"+i);}}}

RecyleAdapter.java

packagecom.ngh.recucler.adapter;importjava.util.ArrayList;importcom.ngh.recucler.R;importcom.ngh.recucler.R.drawable;importcom.ngh.recucler.R.id;importcom.ngh.recucler.R.layout;importandroid.content.Context;importandroid.support.v7.widget.RecyclerView;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.view.ViewGroup;importandroid.widget.ImageView;importandroid.widget.LinearLayout;importandroid.widget.TextView;/***RecyclerView的适配Adapter*@authorngh**2015年5月23日*/publicclassRecyleAdapterextendsRecyclerView.Adapter<RecyleAdapter.ViewHolder>{privateArrayList<String>list;privateContextcontext;publicRecyleAdapter(ArrayList<String>list,Contextcontext){super();this.list=list;this.context=context;}//点击监听事件此处必须设置public后期考虑到分包的问题publicinterfaceOnRecyclerViewItemClickListener{voidonClick(Viewview,intposition);};privateOnRecyclerViewItemClickListenerlistener;//设置监听器publicvoidsetListener(OnRecyclerViewItemClickListenerlistener){this.listener=listener;}@OverridepublicintgetItemCount(){//TODOAuto-generatedmethodstubreturnlist.size();}/***数据展示*/@OverridepublicvoidonBindViewHolder(finalViewHolderviewHolder,finalinti){//TODOAuto-generatedmethodstubviewHolder.tv.setText(list.get(i));/*item的点击事件创建*/viewHolder.itemView.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){if(listener!=null){listener.onClick(viewHolder.itemView,i);}}});}@OverridepublicViewHolderonCreateViewHolder(ViewGroupviewGroup,inti){//TODOAuto-generatedmethodstubViewview=LinearLayout.inflate(context,R.layout.list_item,null);ViewHolderviewHolder=newViewHolder(view);returnviewHolder;}classViewHolderextendsRecyclerView.ViewHolder{privateImageViewiv;privateTextViewtv;publicViewHolder(ViewitemView){super(itemView);iv=(ImageView)itemView.findViewById(R.id.iv);tv=(TextView)itemView.findViewById(R.id.tv);}}}

效果图:(图片不好,将就看吧)

更多相关文章

  1. Android(安卓)OpenGL ES(八)----纹理编程框架
  2. 【技术直通车】ArcGIS for Android地图控件的5大常见操作
  3. Android圆形进度显示控件的SectorProgressView的使用
  4. [置顶] android 心跳包的分析
  5. 浅析 - Android(安卓)ContentProvider用法示例
  6. Android(安卓)Native层开发Camera应用的方法
  7. Android之Activity的生命周期和Activity间的跳转和数据传递
  8. android 本地数据库sqlite的封装
  9. Android中的 View绘制流程及事件分发

随机推荐

  1. Android call setting 源码分析 (上)
  2. 如何在Android中用好多线程
  3. 《Android经验分享》周刊第8期
  4. android内存--强弱软虚
  5. Android中ViewGroup等容器控件的使用
  6. Android的SDK,NDK以及JNI
  7. Android 动画系列三:Propety Animation
  8. 加快Android单模块编译
  9. Android Studio快捷键设置成跟Eclipse一
  10. android 登陆、提交数据或加载数据时提示