仿牌网站建设,网络app开发网站建设,望京做网站的公司,宏升温岭网站建设各位看官们#xff0c;大家好#xff0c;上一回中咱们说的是Android中UI控件之ListView优化的例子#xff0c;这一回咱们说的例子是UI控件之RecyclerView。闲话休提#xff0c;言归正转。让我们一起Talk Android吧#xff01;看官们#xff0c;我们在前面章回中介绍了Lis…各位看官们大家好上一回中咱们说的是Android中UI控件之ListView优化的例子这一回咱们说的例子是UI控件之RecyclerView。闲话休提言归正转。让我们一起Talk Android吧看官们我们在前面章回中介绍了ListView组件今天我们将介绍ListView组件的升级版RecyclerView组件。之所以叫它升级版本是因为它是官方推出的组件而且官方推荐使用它来替代ListView组件。它虽然和ListView一样是用来在有限的屏幕空间内滚动显示大量数据但是它比ListView的显示效率高因为它每次只创建一个屏幕可以显示的列表当滑动屏幕时它自动销毁从屏幕中消失的列表然后再创建新的列表显示到屏幕中这样循环往复。细看一下这操作就和它的名字一样如果和数据结构对比的话就有点循环队列的意思。接下来我们通过文本结合代码的方式来介绍如何使用RecyclerView组件。1.在布局文件中添加RecyclerView组件。通常是在Activity或者Fragment的布局文件中添加。添加时需要使用完整包名因为它是support库中的东西。代码如下 android.support.v7.widget.RecyclerViewandroid:idid/id_recycler_viewandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent/android.support.v7.widget.RecyclerView2.在代码中加载RecyclerView组件的布局。通常是在Activity的onCreate方法或者Fragment的onCreateView方法中加载它的布局这和普通组件的加载方法相同 //获取RecyclerView控件该控件定义于上面的布局中mRecyclerView (RecyclerView)view.findViewById(R.id.recyclerview); 3.设置LayouManager。使用该组件的setLayoutManager方法。代码如下 mRecyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));4.创建适配器(Adapter)对象并且为RecyclerView设置Adapter。具体的代码如下 //把Recylerview和adapter关联起来,CustomAdapter稍后介绍mRecyclerView.setAdapter(new CustomAdapter(mData)); 简单起见在这里的把mData定义成一个数组在实际中可以依据项目需求来定义。但是不管如何定义它都要和适配器的构造函数保持一致不然没有办法把数据传递给适配器。此外这也是可以进行扩展的地方我们将在后面章回中介绍下面是与mData相关的代码 private String[] mData new String[50];for(int i0; i50;i){mData[i] This is item (i1);}接下来该适配器出场了代码中的CustomeAdapter类是RecyclerView.Adapter的子类也就是说RecyclerView已经把适配器的规范定义好了我们只需要按照规范去实现就可以那么有哪些规范呢规范主要是实现一个ViewHolder这个不陌生吧,并且重写onCreateViewHolder()方法onBindViewHolder()方法和getItemCount。onCreateViewHolder方法主要是加载布局文件和创建ViewHolder这里的布局文件指Recycler包含的布局也就是显示到屏幕中的布局。onBindViewHolder方法主要是为RecyclerView包含的布局中各个控件添加数据进而实现数据和视图的连接操作也可以理解为更新数据。getItemCount方法主要是获取RecyclerView中条目的数量这个数量是指所有数据的数量而不是在屏幕上显示数据的数量。下面是代码不过首先要创建一个布局文件用来显示RecyclerView中每行或者每列显示的内容至于布局中显示哪些的内容可以依据项目需求来定。?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:orientationverticalandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentTextViewandroid:idid/id_recy_view_item_textandroid:layout_widthwrap_contentandroid:layout_height18dp/
/LinearLayout我们创建了一个叫recycler_view_layout的布局文件简单起见我们只放了一个文本组件用来显示一行文本内容。布局创建好以后接下就是重头戏创建适配器。//注意适配器是泛型
public class CustomAdapter extends RecyclerView.AdapterCustomAdapter.CustomViewHolder{ //自己定义的数据容器这里使用简单的字符串数组
//可以是list或者其它容器容器中的数据类型可以自己定义private String[] mStrings; //定义ViewHolder继续自RecyclerView的ViewHolderpublic static class CustomViewHolder extends RecyclerView.ViewHolder{//RecyclerView中每一个子项包含的组件也就是RecyclerView每行或者每列显示的内容public TextView tv; //ViewHolder就是一个数据容器public CustomViewHolder(View v){super(v);//获取RecyclerView中的组件tv (TextView) v.findViewById(R.id.id_recy_view_item_text);}public TextView getTextView(){return tv;}}//重写适配器的构造器目的是把数据传入到适配器中public CustomAdapter(String[] strings){if(strings ! null) {mStrings strings;}}Overridepublic CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {//获取View对象这里的布局就是刚才创建的看布局id就能明白。//它用来显示Recylerview中具体的列表项View view LayoutInflater.from(parent.getContext()).inflate (R.layout.recycler_view_layout,parent,false);//创建viewHoldCustomViewHolder customViewHolder new CustomViewHolder(view); //返回ViewHolderreturn customViewHolder; }Overridepublic void onBindViewHolder(CustomViewHolder holder, int position) {//通过position参数获取列表项在Recylerview中的位置然后更新该位置的数据holder.getTextView().setText(mStrings[position]); }Overridepublic int getItemCount() {//这个长度比较重要如果为0那么recylerview中不会有任何数据显示。return mStrings.length;}
}上面的代码完全是按照RecyclerView.Adapter的规范来写的这和ListView不一样我们可以自己扩展。另外我们还创建了一个布局文件用来显示RecyclerView中每一项的内容该布局不像ListView一样可以使用系统提供的因为系统没有提供只能自己定义。此外RecyclerView组件是support库中的东西它不在SDK中使用该组件时需要添加支持库可以手动修改app目录下的build.gradle文件在dependencies中添加compile com.android.support:recyclerview-v7:25.1.0或者修改项目配置AST会自动修改gradle文件。修改步骤 AST Menu-File-ProjectStructure-app.不过添加的Recyclerview组件要和support库的版本一致不然会出现不兼容的问题。我使用的版本如下 compile com.android.support:appcompat-v7:25.1.0compile com.android.support:recyclerview-v7:25.1.0下面是程序运行的结果请参考各位看官关于Android中UI控件之RecyclerView基础的例子咱们就介绍到这里欲知后面还有什么例子且听下回分解