Android中RecyclerView点击item展开列表详细内容

效果如下:

依然是xml文件的设计,使用了两个RelativeLayout,zu作为主布局和副布局,里面都加入textview显示内容,在副布局里加入一个imageview在这里插入图片描述作为子内容的背景图,代码如下:

tab01.xml

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="wrap_content"

xmlns:tools="http://schemas.android.com/tools"

android:orientation="vertical">

android:id="@+id/rl_parent"

android:layout_width="match_parent"

android:layout_height="50dp"

android:background="#00574B">

android:id="@+id/textViewparent"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="30dp"

android:layout_centerInParent="true"

android:textColor="@android:color/white"

tools:text="主布局" />

android:id="@+id/rl_child"

android:layout_width="match_parent"

android:layout_height="100dp"

android:background="#ffffff"

android:visibility="gone">

android:id="@+id/imageview"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

android:id="@+id/textViewchild"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:textSize="25dp"

android:textColor="#000000"

tools:text="副部局" />

activity_main.xml

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:id="@+id/id_content"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1">

android:id="@+id/recyclerView"

android:layout_width="match_parent"

android:layout_height="match_parent">

核心代码Adapter:

public class adapter extends RecyclerView.Adapter {

private List mlist=new ArrayList<>();

private Context context;

private View inflater;

private static final String tag=adapter.class.getSimpleName();

private int expandedPosition=1;

private myviewholder mViewHolder;

public adapter(Context context) {//,List list

this.context=context;

}

public void setExpandCollapseDataList(List list){

mlist=list;

notifyDataSetChanged();

}

@Override

public adapter.myviewholder onCreateViewHolder(ViewGroup viewGroup, int viewType) {

inflater= LayoutInflater.from(context).inflate(R.layout.tab01,viewGroup,false);

myviewholder myviewholder=new myviewholder(inflater);

return myviewholder;

}

@Override

public void onBindViewHolder(final adapter.myviewholder myviewholder, final int j) {

myviewholder.textviewparent.setText(mlist.get(j));

myviewholder.imageview.setImageResource(R.drawable.p1);

myviewholder.textviewchild.setText(mlist.get(j+15));

final boolean isExpanded=j==expandedPosition;

myviewholder.rlChild.setVisibility(isExpanded ? View.VISIBLE : View.GONE);

myviewholder.rlParent.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

if (mViewHolder != null) {

mViewHolder.rlChild.setVisibility(View.GONE);

notifyItemChanged(expandedPosition);

}

expandedPosition = isExpanded ? -1 : myviewholder.getAdapterPosition();

mViewHolder = isExpanded ? null : myviewholder;

notifyItemChanged(myviewholder.getAdapterPosition());

}

});

}

@Override

public int getItemCount() {

return mlist == null ? 0 : mlist.size()/2;

}

class myviewholder extends RecyclerView.ViewHolder{

private ImageView imageview;

RelativeLayout rlParent, rlChild;

TextView textviewparent, textviewchild;

public myviewholder(View itemView) {

super(itemView);

rlParent = itemView.findViewById(R.id.rl_parent);

rlChild = itemView.findViewById(R.id.rl_child);

textviewparent = itemView.findViewById(R.id.textViewparent);

textviewchild = itemView.findViewById(R.id.textViewchild);

imageview=itemView.findViewById(R.id.imageview);

}

}

}

主要的代码是 ViewHolder中 bindView() , onClick() 这两个方法对变量的操作。将list中前一半作为主布局数据,后一半作为副布局的数据生成。

数据和执行

private void initmyData() {

list.add("路德维希·凡·贝多芬");

list.add("萧友梅");

list.add("阿炳");

list.add("冼星海");

list.add("聂耳");

list.add("施光南");

list.add("弗里德里克·肖邦");

list.add("罗伯特·舒曼");

list.add("莫扎特");

list.add("约瑟夫·海顿");

list.add("舒伯特");

list.add("巴赫");

list.add("弗仑兹·李斯特");

list.add("约翰奈斯·勃拉姆斯");

list.add("门德尔松");

list.add("德国作曲家、钢琴家、指挥家,被称为乐圣。");

list.add("中国专业音乐教育的奠基人和开拓者、音乐理论家、作曲家。");

list.add("民间音乐家、二胡演奏家,誉为演奏能手。");

list.add("中国近代作曲家、钢琴家--人民音乐家。");

list.add("中国音乐家--时代歌手。");

list.add("誉为时代歌手,现代抒情歌曲作曲家。");

list.add("誉为钢琴诗人,波兰作曲家、钢琴家。");

list.add("德国著名作曲家、音乐评论家。");

list.add("奥地利作曲家,被誉为神童。");

list.add("奥地利作曲家,维也纳古典派奠基者之一。");

list.add("奥地利作曲家--前所未有的最富诗意的音乐家。");

list.add("德国最伟大的古典作曲家之一,管风琴演奏家。");

list.add("天才的匈牙利作曲家、钢琴家、指挥家和音乐活动家。");

list.add("德国十九世纪后半叶最卓越的、古典乐派最后的一位作曲家。");

list.add("德国著名作曲家。");

}

private void initView1() {

adapter adapter = new adapter(this);

RecyclerView recyclerView = findViewById(R.id.recyclerView);

recyclerView.setLayoutManager(new LinearLayoutManager(this));

recyclerView.setHasFixedSize(true);

recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));

recyclerView.setAdapter(adapter);

adapter.setExpandCollapseDataList(list);

}

话不多说,上代码。

总结

到此这篇关于Android Studio使用recyclerview实现展开和折叠(在之前的微信页面基础之上)的文章就介绍到这了,更多相关android studio recyclerview实现展开折叠内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

android可折叠窗口,Android Studio使用recyclerview实现展开和折叠功能(在之前的微信页面基础之上)...相关推荐

  1. Android Studio使用recyclerview实现展开和折叠(在之前的微信页面基础之上)

    Android Studio使用recyclerview实现展开和缩回(在之前的微信页面基础之上) Android中RecyclerView点击item展开列表详细内容 github源码地址: And ...

  2. android 自定义窗口,Android studio如何自定义设置窗口布局?

    1.进行打开电脑中的Android studio中进行设置布局上的窗口选项. 2.默认布局设定完成之后,然后进行Android studio菜单中的"windows"的选项. 3. ...

  3. Android Studio开发RecyclerView遇到的各种问题以及解决(一)

    Android Studio开发RecyclerView遇到的各种问题以及解决(一) 参考文章: (1)Android Studio开发RecyclerView遇到的各种问题以及解决(一) (2)ht ...

  4. Android view.settran,Android RecyclerView从入门到玩坏

    目录 前言 基础使用 分隔线 点击监听 搭配CardView 更丰富的条目 增删条目 快速添加视图 让RecyclerView支持复杂视图 最后前言 RecyclerView在Android界面开发当 ...

  5. Android开发工具Android Studio、Android SDK和Genymotion完全配置

    所谓"工欲善其事,必先利其器".Android Studio 是谷歌推出一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Androi ...

  6. android studio获取数字签名,Android应用开发Android Studio数字签名打包apk图文步骤教程...

    本文将带你了解Android应用开发Android Studio数字签名打包apk图文步骤教程,希望本文对大家学Android有所帮助. Android Studio数字签名打包release版apk ...

  7. 在PC上安装Android SDK与Android模拟器 - 使用Android Studio 3.1.1

    一. 前言 最近重新安装了一下Android环境,发现现在已经在Google官网找不到独立的Android SDK可以下载了,而网上的其它教程比较旧,还是描述怎么SDK Manager里设置使用国内的 ...

  8. Android入门教程 (一) Android简介和android studio安装

    本文原创首发CSDN,本文链接:https://blog.csdn.net/qq_41464123/article/details/104514467作者博客https://blog.csdn.net ...

  9. webview和android做壳,Android Studio 制作一个 WebView 外壳

    背景 做为一条BS狗,开发应用当然趋向于BS,为了方便维护,降低开发成本,决定只做一个webview做为程序入口,所有的功能页面集中在服务端. 本次踩坑遇到了 js不支持.点击返回直接退出应用.htt ...

最新文章

  1. srcache_nginx redis 构建缓存系统应用一例
  2. spring中controller与jsp之间的那些事儿
  3. Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA
  4. “猜画小歌”的一些细节和思考
  5. setTimeout 定时器的使用
  6. Google 首次引入数据中心液体冷却
  7. ha apache mysql_apache-2.2 – Apache和MySQL的HAProxy平衡算法
  8. 给楠哥准备的入门单片机
  9. y空间兑换代码_进行图像增广的15+种功能总结和Python代码实现
  10. sql server 死锁排查
  11. 单场淘汰制场次计算方法_淘汰赛、单循环赛和双循环赛的计算方法分别是什么?...
  12. oracle密码过期之后如何修改成永久不过期
  13. conime.exe 文件的秘密
  14. Linux scipy安装
  15. CSS学习11:区块背景样式(布局图片)和用户交互图片
  16. 自己封装特定的Windows系统镜像
  17. 引用次数在15000次以上的都是什么神仙论文?
  18. Unity3D说明文档翻译-Preferences
  19. vscode setting 配置
  20. 微信小程序开发之——制作表格

热门文章

  1. python kmeans聚类结果怎么分析_KMeans聚类的剪影分析
  2. 《能断金刚》46个商业问题解决之法
  3. Skype for Business到Microsoft Teams的升级(一)--为什么要升级
  4. 华天动力协同办公系统V380中小企业版功能简介
  5. 关于js 时间的暂停和开始
  6. 第3章:基于媒体查询生成PDF
  7. cad导出pdf_PDF与DWG不得不说的故事(三),CAD如何批量转PDF
  8. 《Android 网络开发与应用实战详解》——2.3节Android系统架构
  9. 论文阅读笔记:MGAT: Multi-view Graph Attention Networks
  10. 备战天华杯第一天(成长小日记)