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
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> 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