RecyclerView和CardView

相对其他View,这个比较复杂

1.新建一个layout文件item_list_content.xml来存放CardView

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="wrap_content"
 4     android:layout_height="wrap_content"
 5     android:orientation="horizontal">
 6
 7     <android.support.v7.widget.CardView
 8         android:layout_width="match_parent"
 9         android:layout_height="wrap_content">
10
11         <LinearLayout
12             android:padding="2dp"
13             android:layout_width="match_parent"
14             android:layout_height="wrap_content"
15             android:orientation="vertical">
16
17             <TextView
18                 android:id="@+id/textViewFirst"
19                 android:layout_width="match_parent"
20                 android:layout_height="wrap_content"
21                 android:layout_margin="@dimen/text_margin"
22                 android:textAppearance="?attr/textAppearanceListItem" />
23
24             <TextView
25                 android:id="@+id/textViewLast"
26                 android:layout_width="match_parent"
27                 android:layout_height="wrap_content"
28                 android:layout_margin="@dimen/text_margin"
29                 android:textAppearance="?attr/textAppearanceListItem" />
30
31         </LinearLayout>
32
33     </android.support.v7.widget.CardView>
34
35
36 </LinearLayout>

2.加入RecyclerView

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:app="http://schemas.android.com/apk/res-auto"
 4     xmlns:tools="http://schemas.android.com/tools"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent"
 7     tools:context="com.mazingtec.mazing.Hall">
 8
 9     <android.support.design.widget.AppBarLayout
10         android:layout_width="match_parent"
11         android:layout_height="wrap_content">
12
13         <android.support.v7.widget.Toolbar
14             android:id="@+id/toolbar"
15             android:layout_width="match_parent"
16             app:navigationIcon="@mipmap/ic_menu_white_48dp"
17             app:titleTextAppearance="@style/TextAppearance.AppCompat.Large"
18             android:layout_height="?attr/actionBarSize"
19             android:background="@color/primary_dark_material_dark">
20
21         <TextView
22             android:id="@+id/toolbar_title"
23             android:layout_width="wrap_content"
24             android:layout_height="wrap_content"
25             android:layout_gravity="center"
26             android:textAppearance="@style/TextAppearance.AppCompat.Large"
27             android:text="@string/main_title1"
28             android:textSize="20sp" />
29
30         </android.support.v7.widget.Toolbar>
31
32     </android.support.design.widget.AppBarLayout>
33
34     <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
35         xmlns:app="http://schemas.android.com/apk/res-auto"
36         xmlns:tools="http://schemas.android.com/tools"
37         android:id="@+id/recyclerView"
38         android:layout_width="match_parent"
39         android:layout_height="wrap_content"
40         android:layout_marginLeft="16dp"
41         android:layout_marginRight="16dp"
42         app:layout_behavior="@string/appbar_scrolling_view_behavior"
43         app:layoutManager="LinearLayoutManager"
44         tools:listitem="@layout/item_list_content"/>
45
46     <android.support.design.widget.BottomNavigationView
47         android:id="@+id/navigation"
48         android:layout_width="match_parent"
49         android:layout_height="wrap_content"
50         android:layout_gravity="bottom"
51         android:background="?android:attr/windowBackground"
52         app:menu="@menu/bottomnav_menu" />
53
54 </android.support.design.widget.CoordinatorLayout>

3.建立一个新的Package用来存放所有的数据类,data,建立RecyclerView的数据类

 1 public class HallData {
 2     private String first;
 3     private String last;
 4
 5     public HallData () {}
 6
 7     public HallData(String first, String last) {
 8         this.first = first;
 9         this.last = last;
10     }
11
12     public String getFirst() {
13
14         return first;
15     }
16
17     public String getLast() {
18
19         return last;
20     }
21
22 }

4.新建一个Package用于存放控制器,mAdapter,并新件一个class来控制RecyclerView,RvAdapter

 1 public class RvAdapter extends RecyclerView.Adapter<RvAdapter.ViewHolder> {
 2
 3     private List<HallData> hallDatas;
 4     private Context context;
 5
 6     public RvAdapter(List<HallData> hallDatas, Context context) {
 7         this.hallDatas = hallDatas;
 8         this.context = context;
 9     }
10
11     @Override
12     public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
13         View v = LayoutInflater.from(parent.getContext())
14                 .inflate(R.layout.item_list_content, parent, false);
15
16         return new ViewHolder(v);
17     }
18
19     @Override
20     public void onBindViewHolder(ViewHolder holder, int position) {
21         HallData hallData = hallDatas.get(position);
22
23         holder.textViewFirst.setText(hallData.getFirst());
24         holder.textViewLast.setText(hallData.getLast());
25
26     }
27
28     @Override
29     public int getItemCount() {
30         return hallDatas.size();
31     }
32
33     public  class  ViewHolder extends RecyclerView.ViewHolder {
34
35         public TextView textViewFirst;
36         public TextView textViewLast;
37
38         public ViewHolder(View itemView) {
39             super(itemView);
40
41             textViewFirst = (TextView) itemView.findViewById(R.id.textViewFirst);
42             textViewLast = (TextView) itemView.findViewById(R.id.textViewLast);
43         }
44     }
45 }

5.最后就是代码实现了,做了一些假数据

  1 package com.mazingtec.mazing;
  2
  3 import android.support.annotation.NonNull;
  4 import android.support.design.widget.BottomNavigationView;
  5 import android.support.v7.app.AppCompatActivity;
  6 import android.os.Bundle;
  7 import android.support.v7.widget.LinearLayoutManager;
  8 import android.support.v7.widget.RecyclerView;
  9 import android.support.v7.widget.Toolbar;
 10 import android.view.Menu;
 11 import android.view.MenuItem;
 12 import android.view.View;
 13 import android.widget.TextView;
 14 import android.widget.Toast;
 15
 16 import com.mazingtec.mazing.data.HallData;
 17 import com.mazingtec.mazing.mAdapter.RvAdapter;
 18
 19 import java.util.ArrayList;
 20 import java.util.List;
 21
 22 public class Hall extends AppCompatActivity implements View.OnClickListener{
 23
 24     private TextView toolbartitle;
 25
 26     private RecyclerView recyclerView;
 27     private RecyclerView.Adapter adapter;
 28     private List<HallData> hallDatas;
 29
 30     private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
 31             = new BottomNavigationView.OnNavigationItemSelectedListener() {
 32
 33         @Override
 34         public boolean onNavigationItemSelected(@NonNull MenuItem item) {
 35             switch (item.getItemId()) {
 36                 case R.id.navigation_hunt:
 37                     toolbartitle.setText(R.string.main_title1);
 38                     return true;
 39
 40                 case R.id.navigation_hall:
 41                     toolbartitle.setText(R.string.main_title2);
 42                     return true;
 43
 44                 case R.id.navigation_treasury:
 45                     toolbartitle.setText(R.string.main_title3);
 46                     return true;
 47             }
 48             return false;
 49         }
 50
 51     };
 52
 53     @Override
 54     protected void onCreate(Bundle savedInstanceState) {
 55         super.onCreate(savedInstanceState);
 56         setContentView(R.layout.activity_hall);
 57
 58         //Toolbar setup
 59         toolbartitle = (TextView) findViewById(R.id.toolbar_title);
 60         Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
 61         toolbar.setTitle("");
 62         setSupportActionBar(toolbar);
 63         getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 64         getSupportActionBar().setHomeButtonEnabled(true);
 65
 66         //Add BottomNavigationView listener
 67         BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
 68         navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
 69
 70         //Setup RecyclerView
 71         recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
 72         recyclerView.setHasFixedSize(true);
 73         recyclerView.setLayoutManager(new LinearLayoutManager(this));
 74         hallDatas = new ArrayList<>();
 75
 76         for(int i = 0; i <= 10; i++) {
 77             HallData hallData = new HallData(
 78                     "first " + (i+1),
 79                     "Last"
 80             );
 81
 82             hallDatas.add(hallData);
 83         }
 84
 85         adapter = new RvAdapter(hallDatas, this);
 86         recyclerView.setAdapter(adapter);
 87     }
 88
 89     @Override
 90     public void onClick(View v) {
 91
 92     }
 93
 94     @Override
 95     public boolean onCreateOptionsMenu(Menu menu) {
 96         // Inflate the menu; this adds items to the action bar if it is present.
 97         getMenuInflater().inflate(R.menu.toolbar_menu, menu);
 98         return true;
 99     }
100
101     @Override
102     public boolean onOptionsItemSelected(MenuItem item) {
103         // Handle action bar item clicks here. The action bar will
104         // automatically handle clicks on the Home/Up button, so long
105         // as you specify a parent activity in AndroidManifest.xml.
106         int id = item.getItemId();
107
108         //noinspection SimplifiableIfStatement
109         if (id == R.id.action_search) {
110             Toast.makeText(this, "搜索!", Toast.LENGTH_LONG).show();
111             return true;
112         }
113
114         if (id == android.R.id.home) {
115             Toast.makeText(this, "哈哈!", Toast.LENGTH_LONG).show();
116             return true;
117         }
118
119         return super.onOptionsItemSelected(item);
120     }
121
122 }
时间: 2025-01-05 18:03:35

RecyclerView和CardView的相关文章

【android】使用RecyclerView和CardView,实现知乎日报精致布局

完整代码,请参考我的博客园客户端,git地址:http://git.oschina.net/yso/CNBlogs 在写博客园客户端的时候,突然想到,弄个知乎日报风格的简单清爽多好!不需要那么多繁杂的信息干扰视野. 先贴上效果图,左边是知乎日报的,右边是本方案的 本文所使用的ide是androidStudio 首先我们需要在项目中,引入RecyclerView.CardView 在build.gradle的 dependencies 添加两条引用语句,如 dependencies { compi

Android学习笔记二十九之SwipeRefreshLayout、RecyclerView和CardView

Android学习笔记二十九之SwipeRefreshLayout.RecyclerView和CardView 前面我们介绍了AlertDialog和几个常用的Dialog,ProgressDialog进度条提示框.DatePickerDialog日期选择对话框和TimePickerDialog时间选择对话框.这一节我们介绍几个新的API控件SwipeRefreshLayout.RecyclerView和CardView,这几个API控件都是google在Android5.0推出的.下面我们来学

Android RecyclerView 和 CardView简单使用

Android 5.0之后Android新增加的两个UI控件RecyclerView,CardView. RecyclerView可以看出是ListView的加强版,能够更加灵活的使用.支持动画等 CardView则是Google提供的一个卡片式视图组件,可以定义如边角的弧度.阴影等属性.从本质上看,可以将CardView看做是FrameLayout在自身之上添加了圆角和阴影效果. 要使用这两个UI控件我们需要先在Android Studio 中添加相应的库: 之后要有两个布局文件: main_

Android L中的RecyclerView 、CardView 、Palette的使用

<Material Design>提到,Android L版本中新增了RecyclerView.CardView .Palette.RecyclerView.CardView为用于显示复杂视图的新增Widget.Palette作为调色板类,可以让你从图像中提取突出的颜色. RecyclerView RecyclerView作为替代ListView使用,RecyclerView标准化了ViewHolder,ListView中convertView是复用的,在RecyclerView中,是把Vie

RecyclerView 结合 CardView 使用

准备工作:导入 1.activity_mian.xml <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:scrollbars="vertical" android:layout_width="match_parent" android:layout_height="match_parent"/> 2.aci

Android RecyclerView And CardView

Google I/O 2014大会公布Android L系统,还有Material Design全新的设计风格.而Material Design卡片式的设计.Google Play应用商店和G+ APP已经变成这样的卡片式的风格.为了配合Material Design, Google特意在SDK中加入了RecyclerView 和 CardView,只是它加入在Support-V7库中,可能是为了兼容旧版本号吧.Google官方已经说明确怎么用了,这里: https://developer.an

Android L 之 RecyclerView 、CardView 、Palette

转: http://blog.csdn.net/xyz_lmn/article/details/38735117 <Material Design>提到,Android L版本中新增了RecyclerView.CardView .Palette.RecyclerView.CardView为用于显示复杂视图的新增Widget.Palette作为调色板类,可以让你从图像中提取突出的颜色. RecyclerView RecyclerView作为替代ListView使用,RecyclerView标准化

Android Material Design系列之RecyclerView和CardView

去年很早之前,我就讲解过RecyclerView的使用,今天我们就在讲解CardView的时候,顺便再把RecyclerView同时讲解一下.RecyclerView.CardView为用于显示复杂视图的新增Widget.接下来看看如何使用吧. RecyclerView RecyclerView介绍 RecyclerView作为替代ListView使用,它更先进,更灵活,RecyclerView标准化了ViewHolder,ListView中convertView是复用的,在RecyclerVi

Android5.x 新控件之RecyclerView,CardView,Palette的使用

『转载注明出处:http://blog.csdn.net/feiduclear_up/article/details/46439005 CSDN废墟的树』 自Android5.0发布以来,谷歌推出全新的Material Desigen设计风格,时过一年多了,在国内也看到很多应用在慢 慢适应MD设计风格.其中比较好的app就是网易新闻客户端了,其设计风格基本符合MD要求.鉴于越来多App采 用MD设计风格,作为吊丝程序员的我们怎能落后呢?那就让我们来学习一些Android5.x新推出的一些控件吧.

Android之 RecyclerView,CardView 详解和相对应的上拉刷新下拉加载

随着 Google 推出了全新的设计语言 Material Design,还迎来了新的 Android 支持库 v7,其中就包含了 Material Design 设计语言中关于 Card 卡片概念的实现 -- CardView.RecyclerView也是谷歌V7包下新增的控件,用来替代ListView的使用,在RecyclerView标准化了ViewHolder类似于ListView中convertView用来做视图缓存. RecyclerView的优点就是,他可以通过设置LayoutMan