1 回答
TA贡献1871条经验 获得超8个赞
无论您使用ListView或RecyclerView,解决方案的通用模板都是相同的:您应该存储对 (a) “当前播放”索引或 (b) “当前播放”数据项的引用。
让我们看看如果您使用ListView并保存“当前播放”索引,将会有什么解决方案。
第一步将是一些变量来保存当前播放的内容。也许您使用 anint并将特殊值-1视为没有播放的意思。
private int currentlyPlayingPosition;
每当您更改当前正在播放的任何歌曲时,您都会更新此处存储的值(可能++currentlyPlayingPosition在用户按下“下一首歌曲”等时)。然后,您还必须打电话adapter.notifyDataSetChanged()告诉ListView重新绘制自己,以便粗体歌曲发生变化。
在您的getView()方法中,您可以检查您正在绘制的视图是否是“当前正在播放”的歌曲,并根据此更改字体:
@Override
public View getView(int position, View convertView, ViewGroup container) {
...
if (position == currentlyPlayingPosition) {
textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
} else {
textView.setTypeface(textView.getTypeface(), Typeface.NORMAL);
}
...
}
整体步骤比较简单:
跟踪当前正在播放的歌曲(通过索引、对象引用或其他方式)
每当当前播放的歌曲发生变化时,通知适配器
在里面getView()检查你正在显示的歌曲是否是当前正在播放的歌曲,如果是,则显示特殊的用户界面
添加回答
举报