android热门搜索标签,Android网易云历史搜索和热门标签
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网易云历史搜索和热门标签相关推荐
- android仿网易云搜索,MaterialDesign之SearchView解锁 仿网易云音乐搜索
原标题:MaterialDesign之SearchView解锁 仿网易云音乐搜索 本文作者 本文由CSDN_LQR投稿 CSDN_LQR的博客地址: http://www.jianshu.com/u/ ...
- php 获取字符串首歌,PHP爬虫 网易云音乐歌手和热门歌曲信息抓取
序章 PM最近问我要网易云的歌手的热门歌曲的信息,作为数据分析.说起网络爬虫我们都不陌生,我们分析网站的HTML的格式和URL的通用格式来写相应的算法.然后请求对应的URL来获取HTML字符串,因此总 ...
- [爬虫]Python爬取网易云音乐搜索并下载歌曲!
Python爬取网易云音乐搜索并下载歌曲! 文章目录 Python爬取网易云音乐搜索并下载歌曲! 1.准备工作 2."实地"观察 3.开始码代码! 4.搜索并下载 结束语 1.准备 ...
- selenum模块抓取网易云网页搜索结果,并拿到MP3地址
网易云网页搜索结果的爬取 因为接口被加密过,不想费时间破解加密的参数 所以使用selenum,速度上还算不错,最后可以爬到MP3的地址,和歌曲详细信息. selenum使用时需要注意,网易云的音乐信息 ...
- CSS——网易云音乐首页之热门推荐歌单的制作
文章目录 前言 一.结构的布局 二.实现过程 1.HTML结构 2.CSS样式 总结 前言 本文主要讲述了网易云音乐首页的热门推荐歌单部分的实现过程,我将从先分析大致结构与布局,其次书写样式的顺序进行 ...
- 爬取网易云,搜索指定歌曲,一段为期六天的心酸心累爬歌史。
爬网易云音乐实现搜索,用了一个星期,头发都掉了一大撮. 主要是实现了通过程序在网易云音乐搜索某首歌曲然后下载的功能,可以批量下载. 这是个记录贴,很多废话,是解决问题,分析错误的记录.看代码的请直接移 ...
- Android 贝塞尔曲线实战之网易云音乐鲸云特效,2021程序员进阶宝典
一阶这个比较简单,因为没有在网上找到可以直接输入数学公式的工具,就手工推导了下. ![在这里插入图片描述](https://img- <Android学习笔记总结+最新移动架构视频+大厂安卓面试 ...
- Android 贝塞尔曲线实战之网易云音乐鲸云特效,apm性能监控系统
小说阅读 APP 的翻页效果. 简介 ===================================================================== 在开始实战之前,我们还 ...
- Android 贝塞尔曲线实战之网易云音乐鲸云特效
作者:哈哈将 -个推 Android 高级开发工程师 前言 APP开发市场已经告别"野蛮生长"时代,人们不再满足于APP外形创新,而将目光转向全方面的用户体验上.在这过程中,动效化 ...
最新文章
- kitbash贫民区三维场景模型 Kitbash3d – Favelas
- Win10: tensorflow 学习笔记(3)
- Intellij IDEA + Maven + Cucumber 项目 (三):简单解释RunCukesTest.java
- 令Django 视图有默认 login_required
- 以下关于组装微型计算机的叙述 不正确的是,昆明理工大学 计算机系统练习题...
- 关于AI与高性能计算加速融合,这里有英伟达最新的4个应用案例
- paip.调用GUI接口.
- jenkins war包_Jenkins 集成postman 自动化运行接口测试用例
- java数据库同步_Java数据同步
- rsync 同步文件
- 进制转化——2022蓝桥杯(E题)
- 客户端修改opc服务器的数据,客户端读取opc服务器数据
- Quitting an application - is that frowned upon?
- 互联网思维——简约思维
- idea 项目能运行,但是代码冒红-解决措施
- 微信H5手机网页开发—快速入门
- Re-ID with Triplet Loss
- 湖北计算机专业不错的学校,计算机专业大学TOP10排名,湖北一所大学上榜,这个地方占了四所...
- 千字word转ppt技巧
- 量化均线策略-简单移动平均数、指数加权移动平均数、双均线交叉和异同移动平均线(MACD)...