Android网易云历史搜索和热门标签

最近开发了一个网易云音乐播放器,有这么一个需求,需要展示搜索建议,历史搜索记录

项目地址: github.com/shellhub/Ne…

search_entry.png

从效果图可以看到,标签如果太长无法容纳会自动换行,虽然我们可以自己实现自定义View,但是人生苦短没必要重复造轮子,这里推荐谷歌推出的库flexbox-layout

添加依赖

implementation 'com.google.android:flexbox:1.1.0'复制代码

代码实现

首先这个布局的话我们可以使用RecyclerView去实现,这里需要使用到RecyclerView的多布局,但是为了简单起见我们只看其中的RecyclerView就可以了。

首先我们在你的Activity或者Fragment中初始化RecyclerView,然后设置RecyclerView的布局管理器,然后就可以了,简单吧,就一行代码

rvHots.setLayoutManager(new FlexboxLayoutManager(getContext()));复制代码

完整代码如下

public class HistoryFragment extends Fragment {

private String TAG = TagUtils.getTag(this.getClass());

@BindView(R.id.iv_remove_history)

ImageView ivRemoveHistory;

@BindView(R.id.rvHots)

RecyclerView rvHots;

@BindView(R.id.rvHistory)

RecyclerView rvHistory;

HotSearchAdapter mHotSearchAdapter;

@Nullable

@Override

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.fragment_search_hot, container, false);

ButterKnife.bind(this, view);

setup();

return view;

}

@Override

public void onStart() {

super.onStart();

if (!EventBus.getDefault().isRegistered(this)) {

EventBus.getDefault().register(this);

}

}

private void setup() {

rvHots.setAdapter(mHotSearchAdapter = new HotSearchAdapter());

rvHots.setLayoutManager(new FlexboxLayoutManager(getContext()));

}

@Subscribe(threadMode = ThreadMode.MAIN)

public void onHotsReady(HotResponse hotResponse) {

mHotSearchAdapter.setHots(hotResponse.getResult().getHots());

mHotSearchAdapter.notifyDataSetChanged();

}

}复制代码

package shellhub.github.neteasemusic.adapter;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.TextView;

import com.blankj.utilcode.util.LogUtils;

import org.greenrobot.eventbus.EventBus;

import java.util.ArrayList;

import java.util.List;

import androidx.annotation.NonNull;

import androidx.recyclerview.widget.RecyclerView;

import butterknife.BindView;

import butterknife.ButterKnife;

import lombok.Data;

import shellhub.github.neteasemusic.R;

import shellhub.github.neteasemusic.model.entities.HistoryEvent;

import shellhub.github.neteasemusic.util.TagUtils;

@Data

public class HistoryAdapter extends RecyclerView.Adapter {

private String TAG = TagUtils.getTag(this.getClass());

private List histories = new ArrayList<>();

@NonNull

@Override

public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.hot_item, parent, false);

ButterKnife.bind(this, view);

return new HistoryViewHolder(view);

}

@Override

public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {

if (holder instanceof HistoryViewHolder) {

((HistoryViewHolder) holder).bind(position);

}

}

@Override

public int getItemCount() {

LogUtils.d(TAG, histories.size());

return histories.size();

}

public class HistoryViewHolder extends RecyclerView.ViewHolder {

@BindView(R.id.tv_hot)

TextView tvHistory;

public HistoryViewHolder(@NonNull View itemView) {

super(itemView);

ButterKnife.bind(this, itemView);

}

public void bind(int position) {

tvHistory.setText(histories.get(position));

itemView.setOnClickListener((view) -> {

EventBus.getDefault().post(new HistoryEvent(histories.get(position)));

});

}

}

}复制代码

android热门搜索标签,Android网易云历史搜索和热门标签相关推荐

  1. android仿网易云搜索,MaterialDesign之SearchView解锁 仿网易云音乐搜索

    原标题:MaterialDesign之SearchView解锁 仿网易云音乐搜索 本文作者 本文由CSDN_LQR投稿 CSDN_LQR的博客地址: http://www.jianshu.com/u/ ...

  2. php 获取字符串首歌,PHP爬虫 网易云音乐歌手和热门歌曲信息抓取

    序章 PM最近问我要网易云的歌手的热门歌曲的信息,作为数据分析.说起网络爬虫我们都不陌生,我们分析网站的HTML的格式和URL的通用格式来写相应的算法.然后请求对应的URL来获取HTML字符串,因此总 ...

  3. [爬虫]Python爬取网易云音乐搜索并下载歌曲!

    Python爬取网易云音乐搜索并下载歌曲! 文章目录 Python爬取网易云音乐搜索并下载歌曲! 1.准备工作 2."实地"观察 3.开始码代码! 4.搜索并下载 结束语 1.准备 ...

  4. selenum模块抓取网易云网页搜索结果,并拿到MP3地址

    网易云网页搜索结果的爬取 因为接口被加密过,不想费时间破解加密的参数 所以使用selenum,速度上还算不错,最后可以爬到MP3的地址,和歌曲详细信息. selenum使用时需要注意,网易云的音乐信息 ...

  5. CSS——网易云音乐首页之热门推荐歌单的制作

    文章目录 前言 一.结构的布局 二.实现过程 1.HTML结构 2.CSS样式 总结 前言 本文主要讲述了网易云音乐首页的热门推荐歌单部分的实现过程,我将从先分析大致结构与布局,其次书写样式的顺序进行 ...

  6. 爬取网易云,搜索指定歌曲,一段为期六天的心酸心累爬歌史。

    爬网易云音乐实现搜索,用了一个星期,头发都掉了一大撮. 主要是实现了通过程序在网易云音乐搜索某首歌曲然后下载的功能,可以批量下载. 这是个记录贴,很多废话,是解决问题,分析错误的记录.看代码的请直接移 ...

  7. Android 贝塞尔曲线实战之网易云音乐鲸云特效,2021程序员进阶宝典

    一阶这个比较简单,因为没有在网上找到可以直接输入数学公式的工具,就手工推导了下. ![在这里插入图片描述](https://img- <Android学习笔记总结+最新移动架构视频+大厂安卓面试 ...

  8. Android 贝塞尔曲线实战之网易云音乐鲸云特效,apm性能监控系统

    小说阅读 APP 的翻页效果. 简介 ===================================================================== 在开始实战之前,我们还 ...

  9. Android 贝塞尔曲线实战之网易云音乐鲸云特效

    作者:哈哈将 -个推 Android 高级开发工程师 前言 APP开发市场已经告别"野蛮生长"时代,人们不再满足于APP外形创新,而将目光转向全方面的用户体验上.在这过程中,动效化 ...

最新文章

  1. kitbash贫民区三维场景模型 Kitbash3d – Favelas
  2. Win10: tensorflow 学习笔记(3)
  3. Intellij IDEA + Maven + Cucumber 项目 (三):简单解释RunCukesTest.java
  4. 令Django 视图有默认 login_required
  5. 以下关于组装微型计算机的叙述 不正确的是,昆明理工大学 计算机系统练习题...
  6. 关于AI与高性能计算加速融合,这里有英伟达最新的4个应用案例
  7. paip.调用GUI接口.
  8. jenkins war包_Jenkins 集成postman 自动化运行接口测试用例
  9. java数据库同步_Java数据同步
  10. rsync 同步文件
  11. 进制转化——2022蓝桥杯(E题)
  12. 客户端修改opc服务器的数据,客户端读取opc服务器数据
  13. Quitting an application - is that frowned upon?
  14. 互联网思维——简约思维
  15. idea 项目能运行,但是代码冒红-解决措施
  16. 微信H5手机网页开发—快速入门
  17. Re-ID with Triplet Loss
  18. 湖北计算机专业不错的学校,计算机专业大学TOP10排名,湖北一所大学上榜,这个地方占了四所...
  19. 千字word转ppt技巧
  20. 量化均线策略-简单移动平均数、指数加权移动平均数、双均线交叉和异同移动平均线(MACD)...

热门文章

  1. 网易乌镇咖荟综述 | 2018,AI行业的兴奋与焦虑
  2. 制作二十四进制的时钟特效(JavaScript)
  3. PaddleWeekly | 量化图像感知相似度,这款工具箱超好用!
  4. Tapestry3.0开发概论
  5. 求任何时间下不同纬度太阳高度角的计算公式
  6. 最优灵活体系结构(Optimal Flexible Architecture,OFA)
  7. 页面置换模拟程序设计
  8. 矩形区域的泊松方程,深度学习模拟差分法
  9. iOS 直播技术及Demo
  10. Latex最后一页文本或参考文献左右对齐(平衡)