From 73c39b8b959137d284355e255846f6570737f947 Mon Sep 17 00:00:00 2001 From: px4lqzo5h <2148135761@qq.com> Date: Mon, 16 Dec 2024 14:41:54 +0800 Subject: [PATCH 1/6] Update ExampleInstrumentedTest.java --- .../musicplayer/ExampleInstrumentedTest.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/app/src/androidTest/java/com/example/musicplayer/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/example/musicplayer/ExampleInstrumentedTest.java index f789981..992d18d 100644 --- a/app/src/androidTest/java/com/example/musicplayer/ExampleInstrumentedTest.java +++ b/app/src/androidTest/java/com/example/musicplayer/ExampleInstrumentedTest.java @@ -7,20 +7,28 @@ import android.support.test.runner.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; -import static org.junit.Assert.*; - /** - * Instrumented test, which will execute on an Android device. - * + * ExampleInstrumentedTest 是一个继承自 AndroidJUnit4 的测试类,用于在Android设备上执行测试。 + *

+ * 这个类包含了一个测试方法 useAppContext,用于验证应用程序的上下文是否正确。 + *

* @see Testing documentation + * 注意:上面的链接是指向Android官方文档中关于测试的文档,如果无法访问,可能是因为网络问题或者链接不正确。 */ @RunWith(AndroidJUnit4.class) public class ExampleInstrumentedTest { + /** + * useAppContext 是一个测试方法,用于验证应用程序的上下文。 + * 这个方法会检查测试的应用程序的包名是否与预期的包名相匹配。 + * @throws Exception 如果测试失败,则抛出异常。 + */ @Test public void useAppContext() throws Exception { - // Context of the app under test. + // 获取当前测试的应用程序的上下文环境 Context appContext = InstrumentationRegistry.getTargetContext(); + // 断言测试的应用程序的包名是否为 "com.example.musicplayer" + // 如果包名不匹配,则测试失败,并抛出异常 assertEquals("com.example.musicplayer", appContext.getPackageName()); } -} +} \ No newline at end of file -- 2.34.1 From 3ded1fe82f7a4941cfc6717ed055c20991018cc8 Mon Sep 17 00:00:00 2001 From: px4lqzo5h <2148135761@qq.com> Date: Mon, 16 Dec 2024 14:46:51 +0800 Subject: [PATCH 3/6] Update AlbumSongAdapter.java --- .../musicplayer/adapter/AlbumSongAdapter.java | 63 ++++++++++++++++--- 1 file changed, 53 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/example/musicplayer/adapter/AlbumSongAdapter.java b/app/src/main/java/com/example/musicplayer/adapter/AlbumSongAdapter.java index 392686d..b59c49d 100644 --- a/app/src/main/java/com/example/musicplayer/adapter/AlbumSongAdapter.java +++ b/app/src/main/java/com/example/musicplayer/adapter/AlbumSongAdapter.java @@ -17,34 +17,53 @@ import com.example.musicplayer.util.FileUtil; import java.util.List; /** - * Created by 残渊 on 2018/11/27. + * AlbumSongAdapter 是一个 RecyclerView.Adapter 的扩展,用于展示专辑中的歌曲列表。 */ - public class AlbumSongAdapter extends RecyclerView.Adapter { + // 歌曲数据列表 private List mSongsBeanList; + // 上一个被点击的位置 private int mLastPosition = -1; + // 点击事件的监听器 private OnItemClickListener mSongClick; + // 歌曲项的视图类型 private final int songType = 1; + // 底部视图的类型 private final int footerType = 2; + /** + * 构造函数,初始化歌曲列表。 + * @param songsBeans 歌曲数据的列表 + */ public AlbumSongAdapter(List songsBeans) { mSongsBeanList = songsBeans; } + /** + * 设置歌曲点击事件的监听器。 + * @param songClick 点击事件监听器 + */ public void setSongClick(OnItemClickListener songClick) { mSongClick = songClick; } + /** + * 创建新的ViewHolder实例。 + * @param parent 父布局 + * @param viewType 视图类型 + * @return 返回对应的ViewHolder + */ @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + // 根据视图类型创建不同的ViewHolder if (viewType == songType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.recycler_song_search_item, parent, false); ViewHolder viewHolder = new ViewHolder(view); return viewHolder; - }else{ + } else { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.footer_view_player_height, parent, false); FooterHolder footerHolder = new FooterHolder(view); @@ -52,12 +71,18 @@ public class AlbumSongAdapter extends RecyclerView.Adapter { mSongClick.onClick(position); equalPosition(position); @@ -83,18 +109,29 @@ public class AlbumSongAdapter extends RecyclerView.Adapter Date: Mon, 16 Dec 2024 14:50:37 +0800 Subject: [PATCH 4/6] Update DownloadSongAdapter.java --- .../adapter/DownloadSongAdapter.java | 64 +++++++++++++++++-- 1 file changed, 58 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/example/musicplayer/adapter/DownloadSongAdapter.java b/app/src/main/java/com/example/musicplayer/adapter/DownloadSongAdapter.java index eee13b3..c7f9871 100644 --- a/app/src/main/java/com/example/musicplayer/adapter/DownloadSongAdapter.java +++ b/app/src/main/java/com/example/musicplayer/adapter/DownloadSongAdapter.java @@ -17,6 +17,7 @@ import com.example.musicplayer.util.FileUtil; import java.util.List; /** + * DownloadSongAdapter 是一个 RecyclerView.Adapter 的扩展,用于展示已下载歌曲的列表。 *

  *     author : 残渊
  *     time   : 2019/09/18
@@ -25,30 +26,52 @@ import java.util.List;
  */
 
 public class DownloadSongAdapter extends RecyclerView.Adapter {
+    // 用于日志记录的标签
     private static final String TAG = "LoveSongAdapter";
+    // 底部视图类型
     private int footerViewType = 1;
+    // 歌曲项视图类型
     private int itemViewType = 0;
+    // 已下载歌曲的数据列表
     private List mDownloadSongList;
+    // 上下文环境
     private Context mContext;
+    // 上一个被点击的位置
     private int mLastPosition = -1;
+    // 点击事件的监听器
     private OnItemClickListener onItemClickListener;
 
+    /**
+     * 设置点击事件的监听器。
+     * @param onItemClickListener 点击事件监听器
+     */
     public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
         this.onItemClickListener = onItemClickListener;
     }
 
+    /**
+     * 构造函数,初始化上下文环境和已下载歌曲的数据列表。
+     * @param context 上下文环境
+     * @param loveList 已下载歌曲的数据列表
+     */
     public DownloadSongAdapter(Context context, List loveList) {
         mContext = context;
         mDownloadSongList = loveList;
     }
 
-
+    /**
+     * ViewHolder类,用于歌曲列表项。
+     */
     class ViewHolder extends RecyclerView.ViewHolder {
         TextView songNameTv;
         TextView singerTv;
         View playLine;
         RippleView item;
 
+        /**
+         * 构造函数,初始化歌曲列表项的视图。
+         * @param itemView 歌曲列表项的视图
+         */
         public ViewHolder(View itemView) {
             super(itemView);
             songNameTv = itemView.findViewById(R.id.tv_title);
@@ -59,21 +82,31 @@ public class DownloadSongAdapter extends RecyclerView.Adapter
Date: Mon, 16 Dec 2024 14:54:31 +0800
Subject: [PATCH 5/6] Update DownloadingAdapter.java

---
 .../adapter/DownloadingAdapter.java           | 61 ++++++++++++++-----
 1 file changed, 47 insertions(+), 14 deletions(-)

diff --git a/app/src/main/java/com/example/musicplayer/adapter/DownloadingAdapter.java b/app/src/main/java/com/example/musicplayer/adapter/DownloadingAdapter.java
index 0767ceb..49c8d59 100644
--- a/app/src/main/java/com/example/musicplayer/adapter/DownloadingAdapter.java
+++ b/app/src/main/java/com/example/musicplayer/adapter/DownloadingAdapter.java
@@ -20,6 +20,7 @@ import com.example.musicplayer.util.MediaUtil;
 import java.util.List;
 
 /**
+ * DownloadingAdapter 是一个 RecyclerView.Adapter 的扩展,用于展示正在下载的歌曲列表。
  * 
  *     author : 残渊
  *     time   : 2019/09/17
@@ -28,25 +29,40 @@ import java.util.List;
  */
 
 public class DownloadingAdapter extends RecyclerView.Adapter {
-
-
+    // 正在下载的歌曲信息列表
     private List downloadInfoList;
-
+    // 项点击事件监听器
     private OnItemClickListener onItemClickListener;
+    // 删除点击事件监听器
     private OnDeleteClickListener onDeleteClickListener;
 
+    /**
+     * 设置删除点击事件的监听器。
+     * @param onDeleteClickListener 删除事件监听器
+     */
     public void setOnDeleteClickListener(OnDeleteClickListener onDeleteClickListener){
         this.onDeleteClickListener = onDeleteClickListener;
     }
 
+    /**
+     * 设置项点击事件的监听器。
+     * @param onItemClickListener 项点击事件监听器
+     */
     public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
         this.onItemClickListener = onItemClickListener;
     }
 
+    /**
+     * 构造函数,初始化正在下载的歌曲信息列表。
+     * @param downloadInfoList 正在下载的歌曲信息列表
+     */
     public DownloadingAdapter(List downloadInfoList) {
         this.downloadInfoList = downloadInfoList;
     }
 
+    /**
+     * ViewHolder类,用于下载列表项。
+     */
     class ViewHolder extends RecyclerView.ViewHolder {
         TextView songTv;
         TextView sizeTv;
@@ -54,6 +70,10 @@ public class DownloadingAdapter extends RecyclerView.Adapter true); //消费该事件,让seekBar不能拖动和点击
         holder.seekBar.setProgress(downloadInfo.getProgress());
-        //点击事件
+        // 设置点击事件
         holder.itemView.setOnClickListener(view -> {
-            onItemClickListener.onClick(i);
+            onItemClickListener.onClick(position);
         });
-        //取消
-        holder.cancelTv.setOnClickListener(view -> onDeleteClickListener.onClick(i));
-
-
+        // 设置取消按钮点击事件
+        holder.cancelTv.setOnClickListener(view -> onDeleteClickListener.onClick(position));
     }
 
+    /**
+     * 返回总的条目数。
+     * @return 总条目数
+     */
     @Override
     public int getItemCount() {
         return downloadInfoList.size();
     }
-}
+}
\ No newline at end of file
-- 
2.34.1


From 8cb36b32569bf71cda8ce09b320e8ddedf4e47e7 Mon Sep 17 00:00:00 2001
From: px4lqzo5h <2148135761@qq.com>
Date: Mon, 16 Dec 2024 15:09:08 +0800
Subject: [PATCH 6/6] Update ExpandableListViewAdapter.java

---
 .../adapter/ExpandableListViewAdapter.java    | 53 ++++++++++++-------
 1 file changed, 35 insertions(+), 18 deletions(-)

diff --git a/app/src/main/java/com/example/musicplayer/adapter/ExpandableListViewAdapter.java b/app/src/main/java/com/example/musicplayer/adapter/ExpandableListViewAdapter.java
index 8dd9c00..47ce675 100644
--- a/app/src/main/java/com/example/musicplayer/adapter/ExpandableListViewAdapter.java
+++ b/app/src/main/java/com/example/musicplayer/adapter/ExpandableListViewAdapter.java
@@ -17,64 +17,80 @@ import com.example.musicplayer.util.CommonUtil;
 import java.util.List;
 
 /**
- * 自建歌单和收藏歌单的二级适配类
+ * 自建歌单和收藏歌单的二级适配类。
  * Created by 残渊 on 2018/9/23.
  */
 public class ExpandableListViewAdapter extends BaseExpandableListAdapter {
     private static final String TAG = "ExpandableListViewAdapter";
 
-    private String[] mGroupStrings;  //一级标题
-    private List> mAlbumCollectionList; //二级收藏歌单列表
-    private Context mContext;
-    private OnChildItemClickListener mChildClickListener; //二级item的点击监听
-
-
+    private String[] mGroupStrings;  // 一级标题数组
+    private List> mAlbumCollectionList; // 二级歌单列表
+    private Context mContext; // 上下文环境
+    private OnChildItemClickListener mChildClickListener; // 二级项的点击监听器
+
+    /**
+     * 构造函数,初始化适配器。
+     * @param context 上下文环境
+     * @param groupStrings 一级标题数组
+     * @param albumCollectionList 二级歌单列表
+     */
     public ExpandableListViewAdapter(Context context, String[] groupStrings, List> albumCollectionList) {
         mAlbumCollectionList = albumCollectionList;
         mGroupStrings = groupStrings;
         mContext = context;
     }
-    //提供给外部使用
-    public  void setOnChildItemClickListener(OnChildItemClickListener onChildItemClickListener){
-        mChildClickListener=onChildItemClickListener;
+
+    /**
+     * 设置二级项的点击监听器。
+     * @param onChildItemClickListener 点击监听器
+     */
+    public void setOnChildItemClickListener(OnChildItemClickListener onChildItemClickListener){
+        mChildClickListener = onChildItemClickListener;
     }
 
+    // 获取一级列表的组数
     @Override
     public int getGroupCount() {
         return mGroupStrings.length;
     }
 
+    // 获取指定组的子项数
     @Override
     public int getChildrenCount(int groupPosition) {
         return mAlbumCollectionList.get(groupPosition).size();
     }
 
+    // 获取指定组的对象
     @Override
     public Object getGroup(int groupPosition) {
         return mGroupStrings[groupPosition];
     }
 
+    // 获取指定子项的对象
     @Override
     public Object getChild(int groupPosition, int childPosition) {
         return mAlbumCollectionList.get(groupPosition).get(childPosition);
     }
 
+    // 获取指定组的ID
     @Override
     public long getGroupId(int groupPosition) {
         return groupPosition;
     }
 
+    // 获取指定子项的ID
     @Override
     public long getChildId(int groupPosition, int childPosition) {
         return childPosition;
     }
 
+    // 是否有稳定的ID
     @Override
     public boolean hasStableIds() {
         return true;
     }
 
-    //绘制一级列表
+    // 绘制一级列表项
     @Override
     public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
         View view;
@@ -90,7 +106,7 @@ public class ExpandableListViewAdapter extends BaseExpandableListAdapter {
             groupViewHolder = (GroupViewHolder) view.getTag();
         }
         groupViewHolder.groupTextView.setText(mGroupStrings[groupPosition]);
-        //根据展开的状态来改变箭头方向
+        // 根据展开状态改变箭头方向
         if (isExpanded) {
             groupViewHolder.pointIv.setImageResource(R.drawable.up);
         } else {
@@ -99,8 +115,7 @@ public class ExpandableListViewAdapter extends BaseExpandableListAdapter {
         return view;
     }
 
-
-    //绘制二级列表
+    // 绘制二级列表项
     @Override
     public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
         View view;
@@ -122,26 +137,28 @@ public class ExpandableListViewAdapter extends BaseExpandableListAdapter {
         childViewHolder.authorTv.setText(mAlbumCollectionList.get(groupPosition).get(childPosition).getSingerName());
         CommonUtil.setImgWithGlide(mContext,
                 mAlbumCollectionList.get(groupPosition).get(childPosition).getAlbumPic(), childViewHolder.faceIv);
-        //点击水波纹效果,结束后开始点击效果
-        childViewHolder.childView.setOnRippleCompleteListener(rippleView -> mChildClickListener.onClick(groupPosition,childPosition));
+        // 点击水波纹效果,结束后开始点击效果
+        childViewHolder.childView.setOnRippleCompleteListener(rippleView -> mChildClickListener.onClick(groupPosition, childPosition));
         return view;
     }
 
+    // 是否可以选择子项
     @Override
     public boolean isChildSelectable(int groupPosition, int childPosition) {
         return true;
     }
 
-
+    // 一级列表项的ViewHolder
     class GroupViewHolder {
         private TextView groupTextView;
         private ImageView pointIv;
     }
 
+    // 二级列表项的ViewHolder
     class ChildViewHolder {
         TextView albumNameTv;
         ImageView faceIv;
         TextView authorTv;
         RippleView childView;
     }
-}
+}
\ No newline at end of file
-- 
2.34.1