Android RecyclerView之ListView显示(二)

Android Filter ListView, RecyclerView 今天整理的是之前项目中写的一个首页针对于列表进行条件过滤的效果。相关描述: 此次省略xxx字… 。 还是来看一下效果图吧(稍微有那么一点点大,1.5M左右,注意看好操作之后的变化):废话就不多说了,接下来直奔主题,先看一下我们的界面布局:<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schema 阅读详情
Android RecyclerView之ListView显示(二)
效果图
  垂直显示(标准显示)       垂直反向显示             水平显示             水平反向显示




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<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)返回出去
@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<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);
}
@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的ListView和RecyclerView的基本用法 在Android 5.0 版本之前,为了方便的显示多行数据,形如QQ聊天信息主界面,最常用的选择无非是ListView控件,但是ListView控件本身就有很大的局限性和效率问题(相对于RecyclerView控件)来说,比如说ListView只能竖向滚动显示数据,不能横向滚动显示数据,在一些特殊的需求中,ListView就无能为力了。在Android5.0版本之后,Android官方推出了一个新的 阅读详情

相关推荐

android—ListView与RecyclerView滑动显示和隐藏浮动按钮

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!资料⬅专栏获取。

2401_85729780的博客 1005

Android中RemoteViews的解析

定义 RemoteViews从字面翻译来看是远程的视图,其实是表示可以在其它进程中显示的View。RemoteViews在Android实际开发中,主要用在通知栏(可参考《Android中通知栏的使用》)和桌面小部件(可参考《Android中小部件的使用》。因为通知栏和小部件都运行在系统的SystemServer进程。所以要对它们进行界面的更新就必须使用RemoteViews来进行跨进程更新界面...

子云心的博客 1523

蓄热式加热炉燃烧技术

蓄热式加热炉燃烧技术

weixin_37928884的博客 2732

RecyclerView的初步使用(1)----代替ListView实现图片列表

概述最近一直在看RecyclerView,小有心得。写下来,一者理清自己的思路,二者供没有接触过的同学参考。 内容较为简单易懂。一、准备工作 在manifests文件中添加网络权限 <uses-permission android:name="android.permission.INTERNET" /> 在Modoule.gradle中的dependencies加入RecyclerView的依

lusciousstrawberry的博客 925

QuestaSim使用Xilinx库的设置

安装QuestaSim

miracle_eicont的专栏 3407

读取通讯录并在ListView中显示

//MainActivity.java package com.example.contactstest; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.co...

qq_42955378的博客 730

python语言下使用opencv接口cv2.VideoCapture()接口调用海康机器人工业相机

文章目录 目录 文章目录 前言 一、opencv接口介绍 二、调用海康机器人工业相机 1.使用海康机器人工业相机的前提 2.调用海康机器人工业相机进行显示 3.调用海康机器人工业相机进行存图 4.调用海康机器人工业相机存视频 5.调用海康机器人工业相机进行简单图像处理 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下.

qq_39570716的博客 1万+

使用RecyclerView实现GridView和ListView混排的效果

单位在做股票相关的app,美工切出一个图,是一个GridView和ListView混排的效果图,而且在滚动的时候,还要实现相关类别名有推动的效果,如下图:        录制的效果不是很好,因为csdn只能上传2M,所以点击的效果没有实现。下面会下载的地址。可以下载看一下。现在说一下实现的思路。个人感觉不是很好,只是为了完成功能,如果你有更好的思路或是方法,希望能告诉我。    1,Recy

我本无名的专栏 8614

STM32F103+LAN9252实战:从站代码迁移中的5个硬件坑与解决方案

本文分享了将EtherCAT从站代码从STM32F767迁移至STM32F103平台时,搭配LAN9252遇到的五个典型硬件问题及解决方案。核心挑战包括时钟源不匹配、FSMC时序配置、中断映射错误、片选资源不足以及Flash烧录异常。文章通过实战经验,强调了硬件差异对代码迁移的关键影响,并提供了具体的调试思路与配置方法。

p5l2m9n4o6q的博客 697

LLM Wiki 的完整输入体系:LLM Wiki极简实战

LLM Wiki 的输入分为**四大类**,覆盖从"原始知识注入"到"系统行为控制"的全流程,所有输入都遵循"**原始资料不可变,规则可迭代,人类反馈闭环**"的核心原则。

ZhangJiqun&191cm&85kg 316

android横屏竖屏

在在相应的activity中设置: android:launchMode="singleTask" android:screenOrientation="portrait"  android:screenOrientation的可设属性如下: "unspecified" 默认值,由系统来选择方向。它的使用策略,以及由于选择时特定的上下文环境,可能会因为设备的差异而不同。 "u...

cirplan的专栏 403

2026年软件测试职业院校技能大赛—ERP管理平台-采购入库模块Bug定位与查找

竞赛对接软件测试相关标准,以“ERP管理平台” 为被测系统,围绕软件测试领域的主流技术及工具,考查选手面 对实际问题的综合分析能力,对测试文档、测试用例的设计能力, 对单元测试、自动化测试、性能测试、接口测试等测试工具及方 法的掌握程度,检验选手团队协作能力、组织规划能力、方法运用能力等。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 194

Scrollview嵌套Listview、GridView、RecycleView时只能显示一行或者自动滚动到底部

当ScrollView中嵌套Listveiw、GridView时,需要重写ListView或者Gridview Listview: import android.content.Context; import android.util.AttributeSet; import android.view.ViewGroup; import android.widget.ListView;

qq_33863472的博客 490

Open3D 点云转深度图像【2026最新版】

python版本Open3D 实现的点云转深度图像,博客长期更新,本文最新更新时间为:2026年5月10日。

点云侠的博客 2836

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

android 查询倒序_RecyclerView实现倒序列表

1、写在前面实现一个聊天界面,就是类似QQ那种,这里是讲一下倒序排列,不实现QQ的各种高级功能2、ListView 反转数据只要把数据倒序加入到adapter的数据集中,就可以实现倒序效果/*** 回底部*/public void goBottom() {handler.post(new Runnable() {@Overridepublic void run() {if (mListView !...

weixin_39613824的博客 714

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Android】ListView和RecyclerView知识总结

SimpleAdapter是Android中用于将数据模型转换成ListView或其他视图组件的适配器。它简化了数据绑定过程,通过映射数据集中的字段到布局文件中的视图。是 Android 中的一种视图组件,用于显示可滚动的垂直列表。它通常用于显示一组相似的数据,比如联系人列表、消息列表等。是 Android 提供的一个更高级和灵活的列表视图控件,相对于。它引入了一些新的概念,如。模式,更高效的滚动和动画支持,以及更灵活的布局管理器(和数据源之间的桥梁,将数据源转换为可以显示在。中的字符串显示在列表视图中。

Patrick_yuxuan的博客 2621

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【Android】ListView与RecyclerView基础运用

接着我们需要创建一个自定义的适配器,这个适配器继承自ArrayAdapter,并将泛型是定位Fruit类@NonNull@Override定义了一个名为的公共类,它继承自类,并且指定了泛型参数Fruit,这意味着这个适配器是专门为处理Fruit类型对象的列表而设计的。声明了一个私有的整型变量resourceId,用于存储列表项的布局资源ID。定义了的构造函数,它接受三个参数::上下文对象,用于访问系统服务和资源。:列表项的布局资源ID。:一个包含Fruit。

2301_79344902的博客 1022

【Android面试】Listview和Recyclerview的区别

请你谈谈Listview和Recyclerview的区别Listview和Recyclerview的区别(阿里一面,滴滴一面,被问到)简单比较布局上局部刷新item view的重用ViewHolder嵌套滑动机制空数据处理Listview的二级缓存ActiveViewsScrapViewsRecyclerview的四级缓存RecyclerRecycledViewPoolViewCacheExtension Listview和Recyclerview的区别(阿里一面,滴滴一面,被问到) 简单比较 listvi

Rose J 的博客 5931

【Android】ListView与RecyclerView的基础使用

简单介绍了 ListView 和 RecyclerView 的基本用法

LiuYaoheng的博客 935

Android ListView 和 RecyclerView

ListView 和 RecyclerView 都是用于 Android 开发中列表展示时所用的常见控件。 ListView 和 RecyclerView 使用的大致相同点 1.使用前都需要准备适配器 Adapter :其实这两个控件的使用在初学者眼里之所以看起来复杂,最大的原因就是需要根据自己的业务来写一个Adapter类 2.使用前都需要准备 item 的 layout :除了准备一个适配器 Adapter 之外,还需要为列表中的每一项准备一个共用的 layout 。 3.使用时都是先初始化一个

yang451212的博客 3380

Android RecyclerView和ListView

1.ListView ListView是不强制我们实现ViewHolder的,但是后来google建议我们实现ViewHolder模式。先分别看一下这两种不同的方式。 不使用ViewHolder的模式: 使用ViewHolder的模式: 注意用红框标出来的部分,ListView使用ViewHolder的好处就在于可以避免每次getView都进行findViewById()操作,因为findViewById()利用的是DFS算法(深度优化搜索),是非常耗性能的。而对于RecyclerView来说,强制实现

zenmela2011的专栏 1615

RecyclerView中ListView GridView 一行显示 多行显示

导入依赖 compile 'com.android.support:recyclerview-v7:25.3.1' //效果 //布局文件 LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-

yukaihuaboke的博客 2607

ScrollableLayout从入门到精通:实现ListView与RecyclerView的无缝滚动

ScrollableLayout是一个强大的Android布局库,专注于实现共同头部与ViewPager、ListView、RecyclerView等滚动组件的无缝集成,帮助开发者轻松构建具有复杂滚动效果的现代应用界面。 ## 什么是ScrollableLayout? ScrollableLayout是一个专为Android平台设计的布局组件,它解决了在使用ViewPager切换不同滚动视图(

gitblog_00915的博客 613
上一篇: Android MediaPlayer详解视屏播放之SurfaceView(四)
下一篇: Android RecyclerView之GridView显示(三)
Android开发-CXY
博客等级 码龄10年 33粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值