各位看官们,大家好,上一回中咱们说的是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变化的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!