Android RecyclerView之ListView显示(二) 效果图   垂直显示(标准显示)       垂直反向显示             水平显示             水平反向显示


Android RecyclerView详解(一)
Android RecyclerView之GridView显示(三) Android RecyclerView之瀑布流显示(四)

Android RecyclerView之ListView显示 本博文讲述了运用RecyclerView替代ListView 在Android RecyclerView详解(一)中已经介绍过了RecyclerView的基本运用接下来我要使用强大RecyclerView来显示ListView的效果。 1.将RecyclerView添加到布局文件并关联兼容包(注意:低版本的安卓系统,要进行兼容包的关联) 步骤:按住control+alt+shift+s出现Project Structure按下图所示关联

关联成功后在主布局文件activity_main中添加RecyclerView
2.在与主类MainActivity同级下新建一个包名为menu在包中新建一个类为DateBean用于归纳信息
3.新建一个行布局名为list_item,并添加一个ImageView和TextView
         <?     xml version=     "1.0"      encoding=     "utf-8"     ?>             <     RelativeLayout      xmlns:     android     =     "http://schemas.android.com/apk/res/android"                       android     :layout_width=     "match_parent"                       android     :layout_height=     "wrap_content"     >              <     ImageView                       android     :id=     "@+id/item_list_icon"                       android     :layout_width=     "100dp"                       android     :layout_height=     "100dp"                       android     :src=     "@mipmap/ic_launcher"     />              <     TextView                       android     :id=     "@+id/item_list_name"                       android     :layout_width=     "match_parent"                       android     :layout_height=     "wrap_content"                       android     :layout_centerVertical=     "true"                       android     :layout_toRightOf=     "@+id/item_list_icon"                       android     :text=     "图片描述"                       android     :textSize=     "28sp"                       android     :textStyle=     "bold"     />                  RelativeLayout     >             4.在res文件下新建一个包为menu在包中建一个menu布局文件用于显示下拉菜单             如果想了解详细的Menu菜单栏详细使用可以点击:Android Menu菜单栏                  
         <?     xml version=     "1.0"      encoding=     "utf-8"     ?>             <     menu      xmlns:     android     =     "http://schemas.android.com/apk/res/android"                       xmlns:     app     =     "http://schemas.android.com/apk/res-auto"     >              <     item                       android     :id=     "@+id/action_ListView"                       android     :orderInCategory=     "100"                       android     :title=     "ListView显示"                       app     :showAsAction=     "never"     >              <     menu     >              <     item                       android     :id=     "@+id/action_ListView_noraml"                       android     :orderInCategory=     "100"                       android     :title=     "标准"                       app     :showAsAction=     "never"     />              <     item                       android     :id=     "@+id/action_ListView_vertical_reverse"                       android     :orderInCategory=     "100"                       android     :title=     "垂直反向"                       app     :showAsAction=     "never"     />              <     item                       android     :id=     "@+id/action_ListView_horizontal"                       android     :orderInCategory=     "100"                       android     :title=     "水平"                       app     :showAsAction=     "never"     />              <     item                       android     :id=     "@+id/action_ListView_horizontal_reverse"                       android     :orderInCategory=     "100"                       android     :title=     "水平反向"                       app     :showAsAction=     "never"     />                   menu     >                   item     >                  menu     >              5.RecyclerView适配器,          RecyclerView适配器的详细介绍可以点击:Android RecyclerView详解(一)              
         package      com.example.recyclerview_activity.adapter;                               import      android.content.Context;                 import      android.support.v7.widget.RecyclerView;                 import      android.view.View;                 import      android.view.ViewGroup;                 import      android.widget.ImageView;                 import      android.widget.TextView;                               import      com.example.recyclerview_activity.R;                 import      com.example.recyclerview_activity.menu.DateBean;                               import      java.util.List;                               /**                  * Date:2017/3/14                  * author:陈箫阳ChenXiaoYang                  * furction:RecycleView的适配器注意要指定泛型,一般我们就是类名的ViewHodler继承ViewHodler(内部已经实现了复用优化机制)                  */                               public class      RecyclerViewListAdapter      extends      RecyclerView.Adapter {                       private      Context      mContext     ;                       //泛型是RecyclerView所需的Bean类                       private      List      mDateBeen     ;                                         //构造方法,一般需要接收两个参数 1.上下文 2.集合对象(包含了我们所需要的数据)                       public      RecyclerViewListAdapter(Context context, List dateBeen) {                       mContext      = context;                       mDateBeen      = dateBeen;                  }                        //创建VIewHolder也就是创建出来一条Item,并把viewHolder(item)返回出去                       @Override                       public      RecyclerViewListAdapter.ListViewHolder onCreateViewHolder(ViewGroup parent,      int      viewType) {                       //转换一个ViewHolder对象,决定了item的样式,参数1.上下文 2.XML布局资源 3.null                       View itemView = View.     inflate     (     mContext     , R.layout.     list_item     ,      null     );                       //创建一个ViewHodler对象                       ListViewHolder listViewHolder =      new      ListViewHolder(itemView);                       //把ViewHolder传出去                       return      listViewHolder;                  }                        //当ViewHolder和数据绑定是回调                       @Override                       public void      onBindViewHolder(RecyclerViewListAdapter.ListViewHolder holder,      int      position) {                       //从集合里拿对应的item的数据对象                       DateBean dateBean =      mDateBeen     .get(position);                       //给Holder里面的控件对象设置数据                       holder.setData(dateBean);                  }                        //决定RecyclerView有多少条item                       @Override                       public int      getItemCount() {                       //数据不为null,有几条数据就显示几条数据                       if      (     mDateBeen      !=      null      &&      mDateBeen     .size() >      0     ) {                       return      mDateBeen     .size();                  }                       return      0     ;                  }                                 //自动帮我们写的ViewHolder,参数:View布局对象                       public class      ListViewHolder      extends      RecyclerView.ViewHolder {                       private final      ImageView      mImageView     ;                       private final      TextView      mTextView     ;                                         public      ListViewHolder(View itemView) {                       super     (itemView);                       mImageView      = (ImageView) itemView.findViewById(R.id.     item_list_icon     );                       mTextView      = (TextView) itemView.findViewById(R.id.     item_list_name     );                  }                                 public void      setData(DateBean data) {                       //给imageView设置图片数据                       mImageView     .setImageResource(data.     icon     );                       //给TextView设置文本数据                       mTextView     .setText(data.     name     );                  }                  }             }              6.编写主类              
         package      com.example.recyclerview_activity;                           import      android.os.Bundle;                 import      android.support.v7.app.AppCompatActivity;                 import      android.support.v7.widget.LinearLayoutManager;                 import      android.support.v7.widget.RecyclerView;                 import      android.view.Menu;                 import      android.view.MenuItem;                 import      android.widget.Toast;                               import      com.example.recyclerview_activity.adapter.RecyclerViewListAdapter;                 import      com.example.recyclerview_activity.menu.DateBean;                               import      java.util.ArrayList;                               public class      MainActivity      extends      AppCompatActivity {                   private      RecyclerView      mRecyclerVIew     ;                   @Override                       protected void      onCreate(Bundle savedInstanceState) {                   super     .onCreate(savedInstanceState);              setContentView(R.layout.     activity_main     );                   //初始化控件                       mRecyclerVIew      = (RecyclerView) findViewById(R.id.     recyclerView     );              }                   //RecyclerView填充数据,实现ListView效果                       private void      loadListDate(Boolean inversion, Boolean orientation) {                   //集合对象                       ArrayList dateBeanArrayList =      new      ArrayList<>();                   //给Bean类放数据,把装好数据的Bean类放到集合里                       for      (     int      i =      0     ; i <      20     ; i++) {                   //创建Bean类对象                       DateBean dateBean =      new      DateBean();                   //给benu类对象添加图片和信息                       dateBean.     icon      = R.mipmap.     ic_launcher     ;              dateBean.     name      =      "RecyclerViewList"      + i;                   //把Bean类放入集合                       dateBeanArrayList.add(dateBean);                  }                   //创建适配器adapter对象 参数有两个1.上下文 2.数据加载集合                       RecyclerViewListAdapter recyclerViewadapter =      new      RecyclerViewListAdapter(     this     , dateBeanArrayList);                   //设置适配器                       mRecyclerVIew     .setAdapter(recyclerViewadapter);                   //布局管理器所需参数:上下文                       LinearLayoutManager linearLayoutManager =      new      LinearLayoutManager(     this     );                   //通过布局管理器可以控制条目排列的顺序 true反向显示 false正常显示(默认)                       linearLayoutManager.setReverseLayout(inversion);                   //设置RecycleView显示的方向是水平还是垂直                  //LinearLayoutManager.HORIZONTAL水平 LinearLayoutManager.VERTICAL默认垂直                  // 三元运算符                       linearLayoutManager.setOrientation(orientation ? LinearLayoutManager.     VERTICAL      : LinearLayoutManager.     HORIZONTAL     );                   //设置布局管理器, 参数linearLayoutManager对象                       mRecyclerVIew     .setLayoutManager(linearLayoutManager);                  }                   @Override                       public boolean      onCreateOptionsMenu(Menu menu) {                   //加载布局使用菜单特有方法,getMenuInflate对象                  //参数1.菜单显示的布局 2.固定Menu                       getMenuInflater().inflate(R.menu.     menu_main     , menu);                   return true     ;              }                   //菜单按钮点击事件处理                       @Override                       public boolean      onOptionsItemSelected(MenuItem item) {                   int      itemId = item.getItemId();                   if      (itemId == R.id.     action_ListView_noraml     ) {                   //标准显示(垂直)                       loadListDate(     false     ,      true     );              Toast.     makeText     (MainActivity.     this     ,      "成功"     , Toast.     LENGTH_SHORT     ).show();                   return true     ;              }     //List垂直反向显示                       else if      (itemId == R.id.     action_ListView_vertical_reverse     ) {              loadListDate(     true     ,      true     );              }     //List水平显示                       else if      (itemId == R.id.     action_ListView_horizontal     ) {              loadListDate(     false     ,      false     );              }     //List水平反向                       else if      (itemId == R.id.     action_ListView_horizontal_reverse     ) {              loadListDate(     true     ,      false     );              }                   return super     .onOptionsItemSelected(item);                  }             }

更多相关文章

  1. 【Android】ListAdapter的常用的子类
  2. android图库竖屏不显示status bar的解决方法
  3. Android(安卓)处理内存泄露的方法
  4. Android百度地图开发之显示当前位置地图
  5. 【Android】ProgressBar圆形加载样式、进度条样式以及代码控制显
  6. android键盘谈起和收起监听
  7. Android(安卓)面向对象编程 类与对象
  8. Android实现随机圆形云标签效果
  9. Android(安卓)Material Design控件之NavigationView

随机推荐

  1. Android:创建可穿戴应用 - 安装和依赖管理
  2. Gravity and layout gravity
  3. Android打造属于自己的时间钟表
  4. 让人郁闷的腾讯Android(安卓)QQ
  5. Android(安卓)组件化最佳实践 ARetrofit
  6. Android主题theme和风格style总结
  7. Android(安卓)Handler 的基本用法
  8. 【Android每日一讲】2012.11.28 快速地搜
  9. 从零开始--系统深入学习android(实践-让我
  10. 个人使用的Android(安卓)Studio快捷键(MAC