读书笔记(六)RecyclerView And CardView相关

来源:互联网 发布:三国杀最强武将知乎 编辑:程序博客网 时间:2024/05/21 11:22

这周本来在看数据库相关的。。看到一半。想起列表还没做,又倒过来,

先来简单介绍一下

RecyclerView 和 CardView都是android5.0推出的新控件,可以在Support-V7包下找到这2个控件

RecyclerView是ListView的升级版,比起ListView更灵活,更有效率

该控件是一个可以装载大量的视图集合,并且可以非常效率的进行回收和滚动。当你list中的元素经常动态改变时可以使用RecyclerView控件。它提供了如下两个功能:

1、为每个条目位置提供了layout管理器(RecyclerView.setLayoutManager)

2、为每个条目设置了操作动画(RecyclerView.setItemAnimator)


RecyclerView。可以说他只关心它本身,比如假设列表的两种item里的布局要不一样,ListView我们就要一个一个改,RecyclerView的强大之处在于,他将item要引用哪个布局的主动权,交给了其本身。

再其次使用RecyclerView还可以很方便的做出左右滑动,瀑布流等,感兴趣的小伙伴可以在网上找找,有很多教程。

CardView:Google提供的一个卡片式视图组件。CardView继承自FrameLayout,允许你在Card视图中显示信息, CardView也可以设置阴影和圆角。使用它可以使我们的列表更好看






---------------------------------------------------------------------------------------------------

一,关于导入

感觉在这一步就已经被掏空。。网上关于导入的方法有很多。。不过我就成功了一种。

我们已经知道这两个控件的位置了,肯定会想直接添加外部JAR,但这个项目会提醒这是一个抽象的类。

所以我们不直接在构建路径里添加jar。

而是先直接Import这两个安卓项目



然后在导入项目的属性里把is library打上钩钩,这样就能在我们自己的项目里找到这个库并添加进来。

可能的问题:V7下面得V4包不兼容这两个控件,在JAR重新添加V4下的V4包

    


--------------------------------------------------------------------------------------------------

     还遇到了无法运行和调试,不知道是不是中文版的原因。尝试了很多方法。终于找到有用的


在eclipse的安装目录下的plugins文件夹内,找到com.ibm.icu_4.4.2.v20110823.jar(版本号会因IDE版本不同而与此不符),在com.ibm.icu_4.4.2.v20110823.jar/com/ibm/icu/目录下找到ICUConfig.properties文件,用文本编辑器将其中的

com.ibm.icu.util.TimeZone.DefaultTimeZoneType = JDK

修改为

com.ibm.icu.util.TimeZone.DefaultTimeZoneType = ICU

然后保存文件退出,重启eclipse,大功告成


方法原文地址:http://blog.csdn.net/luonanqin/article/details/7862069

-----------------------------------------------------------------------------------------------------------------

配置好了直接就可以开始了,

RecyclerView的使用方法其实和ListView很像

XML 直接放个大框架,在item.xml里为他布局

    <android.support.v7.widget.RecyclerView        android:id="@+id/recyclerView"        android:layout_width="match_parent"        android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>

item.xml

  <android.support.v7.widget.CardView        android:id="@+id/card_view"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:foreground="?android:attr/selectableItemBackground"        android:clickable="true"        app:cardCornerRadius="3dp"        app:cardElevation="8dp">                   <TextView                    android:id="@+id/text"                    android:layout_alignParentBottom="true"                    android:layout_alignParentLeft="true"                    android:maxLines="1"                    android:textSize="20sp"                    android:padding="5dp"                    android:textColor="#000000"                    android:gravity="center"                    android:layout_width="match_parent"                    android:layout_height="wrap_content"/>             </android.support.v7.widget.CardView>


先整理卡片里的内容。上面的比较简单。假如是一个新闻列表,每个卡片里都有图片,文字等。我们要建一个数据类,来放这些到时候就直接传入数据类的对象,体现了良好的封装性和可操作性。因为只有一个文本,这里我们就直接 

 public static final List<String> data;

然后RecyclerView和ListView一样需要一个适配器,它的适配器和我们以往使用ListView的,它不是继承实现BaseAdapter而是去继承RecyclerView.Adapter<RecyclerViewViewHolder>,还需要实现3个方法:

- onCreateViewHolder()

- onBindViewHolder()

- getItemCount()

很明显- onCreateViewHolder()加载item的布局,onBindViewHolder()适配渲染数据到View,- getItemCount()获得卡片数量。

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.NewsViewHolder>{

 public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {  .              View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.p0item, viewGroup, false);               return new ViewHolder(view);          }            @Override          public void onBindViewHolder(ViewHolder viewHolder, int i) {              viewHolder.text.setText(data.get(i));          }            @Override          public int getItemCount() {              return data.size();          }  



如果你需要显示的是横向滚动的列表或者竖直滚动的列表,则使用LayoutManager。显然,我们要实现的是ListView的效果,所以需要使用它。生成这个LinearLayoutManager之后可以设置他滚动的方向,默认竖直滚动,所以这里没有显式地设置。
 LinearLayoutManager layoutManager;  


然后再在要呈现列表的页面

// 拿到RecyclerView recyclerView= (RecyclerView)homeView.findViewById(R.id.recyclerView); //添加数据 initData();// 初始化自定义的适配器 adapter=new RecyclerViewAdapter(newsList,getActivity());// 设置固定大小 recyclerView.setHasFixedSize(true);// 设置LinearLayoutManager     recyclerView.setLayoutManager(layoutManager);  // 设置适配器     recyclerView.setAdapter(adapter);


~这样就完成了RecyclerView的基本使用。接下来还可以考虑添加下拉刷新上拉加载等,谷歌官方推出的SwipeRefreshLayout(Support-V4包下)可以完成下拉刷新,GitHub上也有很多开源的项目

例如:https://github.com/vinaysshenoy/mugen

https://github.com/gabrielemariotti/cardslib

。。这提醒我们学会英文是多么重要。。。先给自己定个小目标。学他个一亿单词。。

0 0
原创粉丝点击