一起Talk Android吧(第七十七回:Android中UI控件之RecyclerView变化)

各位看官们,大家好,上一回中咱们说的是Android中UI控件之RecyclerView基础的例子,这一回咱们说的例子是UI控件之RecyclerView变化。闲话休提,言归正转。让我们一起Talk Android吧!

看官们,我们在本章回中主要介绍RecyclerView的变化:横向滚动显示。这是RecyclerView的优势,也是ListView望尘莫及的地方。这也是ListView被取代的原因之一。在介绍该内容之前,我们对RecyclerView的基础内容再做一点补充:RecyclerView中的事件处理。(因为上一章回的内容太多了,所以把事件处理放到了这里)

事件处理是经常使用的功能,几乎每个组件都有该功能,不过RecyclerView没有直接提供该功能,也就是说它不能像ListView一样设置事件监听器,因为它没有提供相关的事件监听器。有看官说:是不是RecyclerView不能处理事件呢?不是,它把事件处理交给了它包含的其它组件,也就是说它间接地提供了事件处理功能。是不是觉得有点绕呢?没关系,接下来我们看看代码:

mListView.setOnItemClickListener //这是ListView在设置事件监听器
        public CustomViewHolder(View v){
            super(v);
            //获取TextView组件并且给它设置事件监听器
            tv =(TextView) v.findViewById(R.id.id_recy_view_item_text); 
            tv.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(v.getContext(),tv.getText()+" 
                    is clicked.",Toast.LENGTH_LONG).show();
                }
            });
        }

大家还记得上一章回中ViewHolder的构造函数吧,我们在构造函数里获取了TextView组件,然后给它设置了事件监听器,这就相当于间接地给RecyclerView设置了事件监听器。因为TextView组件被包含在RecyclerView组件中,它可以看作是RecyclerView组件的一部分。我们再推广一下,只要是给包含于RecyclerView组件中的组件设置了事件监听器,就相当于给RecyclerView设置了事件监听器。好了,关于RecyclerView组件中事件处理的内容就介绍这些,接下来回归本章回的主题。

RecyclerView在处理横向滚动显示方面比较容易,因为它借助了布局管理器,下面是具体的代码,请参考:

        mLinearLayoutManager = new LinearLayoutManager(MainActivity.this);
        // 使用布局管理器的setOrientation方法修改布局的Orientation属性
        mLinearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
        mRecyclerView.setLayoutManager(mLinearLayoutManager);

这里有看官惊讶地说:这就实现了?是的,不过还需要对RecyclerView包含的布局文件做一些小处理,主要是修改布局中组件的长宽属性,以便它们可以横向显示。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   <!--       android:layout_width="match_parent" --> 
              android:layout_width="60dp"
              android:layout_height="wrap_content">

   <TextView
        android:id="@+id/id_recy_view_item_text"
        android:layout_width="50dp"
        android:layout_height="wrap_content"/>
</LinearLayout>

上面的代码就是包含于RecyclerView组件中布局文件的源代码,其中注释掉的内容用来纵向滚动显示。此外,刚才我们添加事件的的TextView组件,就是该布局文件中的TextView组件,大家从代码中也可以看出来。下面是程序的运行结果,请大家参考:

这里写图片描述

各位看官,关于Android中UI控件之RecyclerView变化的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!


猜你喜欢

转载自blog.csdn.net/talk_8/article/details/80658102