Android(安卓)RecyclerView之ListView显示(二)
16lz
2021-01-26
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); } }
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
更多相关文章
- 【Android】ListAdapter的常用的子类
- android图库竖屏不显示status bar的解决方法
- Android(安卓)处理内存泄露的方法
- Android百度地图开发之显示当前位置地图
- 【Android】ProgressBar圆形加载样式、进度条样式以及代码控制显
- android键盘谈起和收起监听
- Android(安卓)面向对象编程 类与对象
- Android实现随机圆形云标签效果
- Android(安卓)Material Design控件之NavigationView