Android RecyclerView之ListView显示(二)
来源:互联网 发布:备份通讯录的软件 编辑:程序博客网 时间:2024/05/29 04:19
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"><ImageViewandroid:id="@+id/item_list_icon"android:layout_width="100dp"android:layout_height="100dp"android:src="@mipmap/ic_launcher"/><TextViewandroid: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"><itemandroid:id="@+id/action_ListView"android:orderInCategory="100"android:title="ListView显示"app:showAsAction="never"><menu><itemandroid:id="@+id/action_ListView_noraml"android:orderInCategory="100"android:title="标准"app:showAsAction="never"/><itemandroid:id="@+id/action_ListView_vertical_reverse"android:orderInCategory="100"android:title="垂直反向"app:showAsAction="never"/><itemandroid:id="@+id/action_ListView_horizontal"android:orderInCategory="100"android:title="水平"app:showAsAction="never"/><itemandroid: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<RecyclerViewListAdapter.ListViewHolder> {private Context mContext;//泛型是RecyclerView所需的Bean类private List<DateBean> mDateBeen;//构造方法,一般需要接收两个参数 1.上下文 2.集合对象(包含了我们所需要的数据)public RecyclerViewListAdapter(Context context, List<DateBean> dateBeen) {mContext = context;mDateBeen = dateBeen;}//创建VIewHolder也就是创建出来一条Item,并把viewHolder(item)返回出去@Overridepublic RecyclerViewListAdapter.ListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {//转换一个ViewHolder对象,决定了item的样式,参数1.上下文 2.XML布局资源 3.nullView itemView = View.inflate(mContext, R.layout.list_item, null);//创建一个ViewHodler对象ListViewHolder listViewHolder = new ListViewHolder(itemView);//把ViewHolder传出去return listViewHolder;}//当ViewHolder和数据绑定是回调@Overridepublic void onBindViewHolder(RecyclerViewListAdapter.ListViewHolder holder, int position) {//从集合里拿对应的item的数据对象DateBean dateBean = mDateBeen.get(position);//给Holder里面的控件对象设置数据holder.setData(dateBean);}//决定RecyclerView有多少条item@Overridepublic 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;@Overrideprotected 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<DateBean> 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);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//加载布局使用菜单特有方法,getMenuInflate对象//参数1.菜单显示的布局 2.固定MenugetMenuInflater().inflate(R.menu.menu_main, menu);return true;}//菜单按钮点击事件处理@Overridepublic 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);}}
0 0
- Android RecyclerView之ListView显示(二)
- Android RecyclerView之代替ListView与GridView
- Android抢Listview饭碗之RecyclerView浅析
- Android UI控件之ListView&RecyclerView
- Android Listview显示效果二
- android 之 ListView (二)
- Android开发之实现滑动RecyclerView,浮动按钮的显示和隐藏(二)
- Android RecyclerView之GridView显示(三)
- Android RecyclerView之瀑布流显示(四)
- RecyclerView之垂直ListView
- Android Filter ListView, RecyclerView
- Android ListView与RecyclerView
- android databinding RecyclerView / ListView
- Android之RecyclerView简单使用(二)
- Android入门之ListView (二)
- android控件之ListView(二)
- android 之 listview (二)
- Android入门之ListView (二)
- VC++获取串口设备信息,CPU ID,硬盘ID,网卡MAC等机器硬件信息,用于加密
- C#xml操作帮助类
- 阻塞/非阻塞/异步/同步
- PCL入门
- 设计模式:适配器模式|菜鸟教程
- Android RecyclerView之ListView显示(二)
- 大数据时代,您的个人信息真的安全吗?
- linux -- CPU
- C#mysql操作类
- 文件系统:FAT12
- 重启Leetcode模式,在无尽的Google Team Match中重生
- 文奇的WY实习连载日记3.16-我真垃圾
- 用OC实现一个类似java的事件监听机制
- linux内核驱动之修改wifi驱动