diff --git a/app/build.gradle b/app/build.gradle index 295d3e2..d706ca8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,4 +38,6 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' implementation 'com.github.felHR85:UsbSerial:6.1.0' + implementation 'androidx.paging:paging-runtime:3.0.0-alpha07' + implementation 'com.tencent:mmkv-static:1.2.7' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 226b770..365eccc 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,29 +9,37 @@ + android:theme="@style/AppTheme"> + + + + + + - - - + + + + - + android:enabled="true"> \ No newline at end of file diff --git a/app/src/main/java/com/skipping/APP.java b/app/src/main/java/com/skipping/APP.java index 8c81dab..fef33ff 100644 --- a/app/src/main/java/com/skipping/APP.java +++ b/app/src/main/java/com/skipping/APP.java @@ -3,10 +3,16 @@ package com.skipping; import com.libs.fragment.BaseApplication; +import com.tencent.mmkv.MMKV; /** * @author Ming * 3/14/22 */ public class APP extends BaseApplication { + @Override + public void onCreate() { + super.onCreate(); + MMKV.initialize(this); + } } diff --git a/app/src/main/java/com/skipping/Contants.java b/app/src/main/java/com/skipping/Contants.java index 61d2e81..681c1f8 100644 --- a/app/src/main/java/com/skipping/Contants.java +++ b/app/src/main/java/com/skipping/Contants.java @@ -17,4 +17,19 @@ public class Contants { public final static String GRADE = "grade"; public final static String UNFINISHED = "未完成"; + + /** + * 账号 + */ + public final static String ACCOUNT = "account"; + + /** + * 密码 + */ + public final static String PASSWORD = "password"; + + /** + * token + */ + public final static String TOKEN = "token"; } diff --git a/app/src/main/java/com/skipping/activity/NetActivity.java b/app/src/main/java/com/skipping/activity/NetActivity.java index 5e21509..12e2298 100644 --- a/app/src/main/java/com/skipping/activity/NetActivity.java +++ b/app/src/main/java/com/skipping/activity/NetActivity.java @@ -2,6 +2,11 @@ package com.skipping.activity; import android.view.View; import android.widget.Button; +import android.widget.LinearLayout; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.libs.fragment.BaseActivity; import com.libs.network.CallBack; @@ -29,11 +34,13 @@ import java.util.List; * 3/15/22 */ public class NetActivity extends BaseActivity { + private RecyclerView recyclerview; private Button btn, btn2, btn3, btn4, btn5, btn6, btn7; private Concise tokenConcise = new Concise(Contants.BASE_URL) { }.build(); private Concise concise; - + private NetRecyclerAdapter adapter; + private LinearLayoutManager linearLayoutManager; @Override protected int getContentViewResId() { return R.layout.activity_net; @@ -48,6 +55,17 @@ public class NetActivity extends BaseActivity { btn5 = findViewById(R.id.btn5); btn6 = findViewById(R.id.btn6); btn7 = findViewById(R.id.btn7); + recyclerview = findViewById(R.id.recyclerview); + linearLayoutManager = new LinearLayoutManager(this); + recyclerview.setLayoutManager(linearLayoutManager); + adapter = new NetRecyclerAdapter(recyclerview); + recyclerview.setAdapter(adapter); + recyclerview.setOnScrollChangeListener(new View.OnScrollChangeListener() { + @Override + public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { + LogUtil.e("最后一个可见",linearLayoutManager.findLastCompletelyVisibleItemPosition()); + } + }); btn.setOnClickListener(new View.OnClickListener() { @Override @@ -112,12 +130,13 @@ public class NetActivity extends BaseActivity { bean.setActivityType("timing"); bean.setGroupID("77bba9124a4281bc9f92f965561cd5"); bean.setIndex(1); - bean.setPageSize(10); + bean.setPageSize(5); bean.setStatus(Contants.UNFINISHED); concise.request(NetActivity.this, concise.api.getActivityList(bean), new CallBack>>() { @Override public void onSuccess(BaseBean> listBaseBean) { - + adapter.setData(listBaseBean.getData()); + adapter.notifyDataSetChanged(); } @Override @@ -155,9 +174,9 @@ public class NetActivity extends BaseActivity { btn6.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - concise.request(NetActivity.this, concise.api.detailActivity("15"), new CallBack>>() { + concise.request(NetActivity.this, concise.api.detailActivity("15"), new CallBack>() { @Override - public void onSuccess(BaseBean> listBaseBean) { + public void onSuccess(BaseBean listBaseBean) { } diff --git a/app/src/main/java/com/skipping/activity/NetRecyclerAdapter.java b/app/src/main/java/com/skipping/activity/NetRecyclerAdapter.java new file mode 100644 index 0000000..a2d58d1 --- /dev/null +++ b/app/src/main/java/com/skipping/activity/NetRecyclerAdapter.java @@ -0,0 +1 @@ +package com.skipping.activity; import android.content.Context; import android.os.Build; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; import com.skipping.R; import com.skipping.net.ActivityBean; import java.util.ArrayList; import java.util.List; /** * @author Ming * 1/6/22 */ public class NetRecyclerAdapter extends RecyclerView.Adapter { private Context mContext; private List list = new ArrayList<>(); public NetRecyclerAdapter(RecyclerView recyclerView) { this.mContext = recyclerView.getContext(); } public void setData(List list) { this.list = list; } @Override public RecyclerHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.net_item, parent, false); return new RecyclerHolder(view); } @Override public void onBindViewHolder(RecyclerHolder holder, int position) { holder.textView.setText(list.get(position).toString()); } @Override public int getItemCount() { return list.size(); } class RecyclerHolder extends RecyclerView.ViewHolder { TextView textView; private RecyclerHolder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.text); } } } \ No newline at end of file diff --git a/app/src/main/java/com/skipping/activity/SplashActivity.java b/app/src/main/java/com/skipping/activity/SplashActivity.java new file mode 100644 index 0000000..9932531 --- /dev/null +++ b/app/src/main/java/com/skipping/activity/SplashActivity.java @@ -0,0 +1,75 @@ +package com.skipping.activity; + +import android.content.Intent; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; + +import com.libs.fragment.BaseActivity; +import com.libs.network.CallBack; +import com.libs.network.Concise; +import com.skipping.Contants; +import com.skipping.R; +import com.skipping.activity.grade.GradeActivity; +import com.skipping.net.API; +import com.skipping.net.BaseBean; +import com.skipping.net.TokenBean; +import com.skipping.net.TokenReqBean; +import com.tencent.mmkv.MMKV; + +/** + * @author Ming + * 3/18/22 + */ +public class SplashActivity extends BaseActivity { + private EditText key, value; + private Button login; + private Concise tokenConcise; + + @Override + protected int getContentViewResId() { + return R.layout.activity_splash; + } + + @Override + protected void initView() { + key = findViewById(R.id.key); + value = findViewById(R.id.value); + login = findViewById(R.id.login); + } + + @Override + protected void initData() { + login.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + login(); + } + }); + } + + private void login() { + tokenConcise = new Concise(Contants.BASE_URL) { + }.build(); + TokenReqBean tokenReqBean = new TokenReqBean(); + tokenReqBean.setDeviceID("466e9c"); + tokenReqBean.setLogName(key.getText().toString()); + tokenReqBean.setLogPwd(value.getText().toString()); + tokenConcise.request(SplashActivity.this, tokenConcise.api.token(tokenReqBean), new CallBack>() { + @Override + public void onSuccess(BaseBean tokenBeanBaseBean) { + MMKV kv = MMKV.defaultMMKV(); + kv.encode(Contants.ACCOUNT, key.getText().toString()); + kv.encode(Contants.PASSWORD, value.getText().toString()); + kv.encode(Contants.TOKEN, tokenBeanBaseBean.getData().getToken()); + Intent intent = new Intent(SplashActivity.this, GradeActivity.class); + startActivity(intent); + } + + @Override + public void onFailed(Throwable e) { + + } + }); + } +} diff --git a/app/src/main/java/com/skipping/activity/clasz/ClassActivity.java b/app/src/main/java/com/skipping/activity/clasz/ClassActivity.java new file mode 100644 index 0000000..513c07d --- /dev/null +++ b/app/src/main/java/com/skipping/activity/clasz/ClassActivity.java @@ -0,0 +1,76 @@ +package com.skipping.activity.clasz; + +import android.content.Intent; +import android.os.Bundle; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.libs.fragment.BaseActivity; +import com.libs.network.CallBack; +import com.libs.network.Concise; +import com.libs.utils.LogUtil; +import com.skipping.Contants; +import com.skipping.R; +import com.skipping.activity.list.ListActivity; +import com.skipping.net.API; +import com.skipping.net.BaseBean; +import com.skipping.net.GradleBean; +import com.tencent.mmkv.MMKV; + +import java.util.List; + +/** + * @author Ming + * 3/18/22 + */ +public class ClassActivity extends BaseActivity { + private RecyclerView recyclerview; + private Concise concise; + private ClassAdapter classAdapter; + + @Override + protected int getContentViewResId() { + return R.layout.activity_show; + } + + @Override + protected void initView() { + recyclerview = findViewById(R.id.recyclerview); + } + + @Override + protected void initData() { + String id = (String) getIntent().getBundleExtra("id").get("id"); + recyclerview.setLayoutManager(new LinearLayoutManager(this)); + classAdapter = new ClassAdapter(recyclerview); + classAdapter.setOnClickListener(new ClassAdapter.OnClick() { + @Override + public void click(String id) { + Intent intent = new Intent(ClassActivity.this, ListActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("id", id); + intent.putExtra("id", bundle); + startActivity(intent); + } + }); + recyclerview.setAdapter(classAdapter); + + MMKV kv = MMKV.defaultMMKV(); + concise = new Concise(Contants.BASE_URL) { + }.addHeader("Token", kv.decodeString(Contants.TOKEN)).build(); + concise.request(ClassActivity.this, concise.api.getClass(id), new CallBack>>() { + @Override + public void onSuccess(BaseBean> listBaseBean) { + classAdapter.setData(listBaseBean.getData()); + classAdapter.notifyDataSetChanged(); + } + + @Override + public void onFailed(Throwable e) { + + } + }); + + } +} diff --git a/app/src/main/java/com/skipping/activity/clasz/ClassAdapter.java b/app/src/main/java/com/skipping/activity/clasz/ClassAdapter.java new file mode 100644 index 0000000..26230f7 --- /dev/null +++ b/app/src/main/java/com/skipping/activity/clasz/ClassAdapter.java @@ -0,0 +1,76 @@ +package com.skipping.activity.clasz; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.recyclerview.widget.RecyclerView; + +import com.skipping.R; +import com.skipping.net.GradleBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Ming + * 3/18/22 + */ +public class ClassAdapter extends RecyclerView.Adapter { + private OnClick onClick; + private Context mContext; + private List list = new ArrayList<>(); + + public ClassAdapter(RecyclerView recyclerView) { + this.mContext = recyclerView.getContext(); + } + + public void setData(List list) { + this.list = list; + } + + @Override + public ClassAdapter.RecyclerHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(mContext).inflate(R.layout.grade_item, parent, false); + return new ClassAdapter.RecyclerHolder(view); + } + + @Override + public void onBindViewHolder(ClassAdapter.RecyclerHolder holder, int position) { + holder.title.setText("班级名称:" + list.get(position).getGroupName()); + holder.name.setText("班级ID:" + list.get(position).getGroupID()); + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onClick.click(list.get(position).getGroupID()); + } + }); + } + + @Override + public int getItemCount() { + return list.size(); + } + + class RecyclerHolder extends RecyclerView.ViewHolder { + TextView title; + TextView name; + + private RecyclerHolder(View itemView) { + super(itemView); + title = itemView.findViewById(R.id.title); + name = itemView.findViewById(R.id.name); + } + } + + public void setOnClickListener(OnClick onClick){ + this.onClick = onClick; + } + + public interface OnClick{ + void click(String id); + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/skipping/activity/detail/DetailActivity.java b/app/src/main/java/com/skipping/activity/detail/DetailActivity.java new file mode 100644 index 0000000..faa4366 --- /dev/null +++ b/app/src/main/java/com/skipping/activity/detail/DetailActivity.java @@ -0,0 +1,74 @@ +package com.skipping.activity.detail; + +import android.content.Intent; +import android.os.Bundle; +import android.widget.TextView; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.libs.fragment.BaseActivity; +import com.libs.network.CallBack; +import com.libs.network.Concise; +import com.skipping.Contants; +import com.skipping.R; +import com.skipping.activity.NetActivity; +import com.skipping.activity.clasz.ClassActivity; +import com.skipping.activity.grade.GradeActivity; +import com.skipping.activity.grade.GradeAdapter; +import com.skipping.net.API; +import com.skipping.net.BaseBean; +import com.skipping.net.DetailActivityBean; +import com.tencent.mmkv.MMKV; + +import java.util.List; + +/** + * @author Ming + * 3/18/22 + */ +public class DetailActivity extends BaseActivity { + private Concise concise; + private TextView name, idTV; + private RecyclerView recyclerview; + private DetailAdapter adapter; + + @Override + protected int getContentViewResId() { + return R.layout.activity_detail; + } + + @Override + protected void initView() { + idTV = findViewById(R.id.id); + name = findViewById(R.id.name); + recyclerview = findViewById(R.id.recyclerview); + } + + @Override + protected void initData() { + String id = (String) getIntent().getBundleExtra("id").get("id"); + recyclerview.setLayoutManager(new LinearLayoutManager(this)); + adapter = new DetailAdapter(recyclerview); + recyclerview.setAdapter(adapter); + + MMKV kv = MMKV.defaultMMKV(); + concise = new Concise(Contants.BASE_URL) { + }.addHeader("Token", kv.decodeString(Contants.TOKEN)).build(); + concise.request(DetailActivity.this, concise.api.detailActivity(id), new CallBack>() { + @Override + public void onSuccess(BaseBean listBaseBean) { + idTV.setText(listBaseBean.getData().getId() + ""); + name.setText(listBaseBean.getData().getActivityName() + ""); + adapter.setData(listBaseBean.getData().getCandidates().get(0)); + adapter.notifyDataSetChanged(); + + } + + @Override + public void onFailed(Throwable e) { + + } + }); + } +} diff --git a/app/src/main/java/com/skipping/activity/detail/DetailAdapter.java b/app/src/main/java/com/skipping/activity/detail/DetailAdapter.java new file mode 100644 index 0000000..a05db4d --- /dev/null +++ b/app/src/main/java/com/skipping/activity/detail/DetailAdapter.java @@ -0,0 +1,74 @@ +package com.skipping.activity.detail; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.recyclerview.widget.RecyclerView; + +import com.skipping.R; +import com.skipping.net.DetailActivityBean; +import com.skipping.net.GradleBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Ming + * 3/18/22 + */ +public class DetailAdapter extends RecyclerView.Adapter { + private OnClick onClick; + private Context mContext; + private List list = new ArrayList<>(); + + public DetailAdapter(RecyclerView recyclerView) { + this.mContext = recyclerView.getContext(); + } + + public void setData(List list) { + this.list = list; + } + + @Override + public DetailAdapter.RecyclerHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(mContext).inflate(R.layout.detail_item, parent, false); + return new DetailAdapter.RecyclerHolder(view); + } + + @Override + public void onBindViewHolder(DetailAdapter.RecyclerHolder holder, int position) { + holder.name.setText("学生名称:" + list.get(position).getName()); + holder.id.setText("ID:" + list.get(position).getPersonID()); + holder.studentid.setText("学生ID:" + list.get(position).getStudentID()); + holder.score.setText("分数:" + list.get(position).getScore()); + } + + @Override + public int getItemCount() { + return list.size(); + } + + class RecyclerHolder extends RecyclerView.ViewHolder { + TextView name, id, studentid, score; + + private RecyclerHolder(View itemView) { + super(itemView); + name = itemView.findViewById(R.id.name); + id = itemView.findViewById(R.id.id); + studentid = itemView.findViewById(R.id.studentid); + score = itemView.findViewById(R.id.score); + } + } + + public void setOnClickListener(OnClick onClick) { + this.onClick = onClick; + } + + public interface OnClick { + void click(String id); + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/skipping/activity/grade/GradeActivity.java b/app/src/main/java/com/skipping/activity/grade/GradeActivity.java new file mode 100644 index 0000000..3be5a51 --- /dev/null +++ b/app/src/main/java/com/skipping/activity/grade/GradeActivity.java @@ -0,0 +1,75 @@ +package com.skipping.activity.grade; + +import android.content.Intent; +import android.os.Bundle; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.libs.fragment.BaseActivity; +import com.libs.network.CallBack; +import com.libs.network.Concise; +import com.skipping.Contants; +import com.skipping.R; +import com.skipping.activity.SplashActivity; +import com.skipping.activity.clasz.ClassActivity; +import com.skipping.net.API; +import com.skipping.net.BaseBean; +import com.skipping.net.GradleBean; +import com.tencent.mmkv.MMKV; + +import java.util.List; + +/** + * @author Ming + * 3/18/22 + */ +public class GradeActivity extends BaseActivity { + private RecyclerView recyclerview; + private Concise concise; + private GradeAdapter gradeAdapter; + + @Override + protected int getContentViewResId() { + return R.layout.activity_show; + } + + @Override + protected void initView() { + recyclerview = findViewById(R.id.recyclerview); + } + + @Override + protected void initData() { + recyclerview.setLayoutManager(new LinearLayoutManager(this)); + gradeAdapter = new GradeAdapter(recyclerview); + gradeAdapter.setOnClickListener(new GradeAdapter.OnClick() { + @Override + public void click(String id) { + Intent intent = new Intent(GradeActivity.this, ClassActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("id", id); + intent.putExtra("id", bundle); + startActivity(intent); + } + }); + recyclerview.setAdapter(gradeAdapter); + + MMKV kv = MMKV.defaultMMKV(); + concise = new Concise(Contants.BASE_URL) { + }.addHeader("Token", kv.decodeString(Contants.TOKEN)).build(); + concise.request(GradeActivity.this, concise.api.getGrade(), new CallBack>>() { + @Override + public void onSuccess(BaseBean> listBaseBean) { + gradeAdapter.setData(listBaseBean.getData()); + gradeAdapter.notifyDataSetChanged(); + } + + @Override + public void onFailed(Throwable e) { + + } + }); + + } +} diff --git a/app/src/main/java/com/skipping/activity/grade/GradeAdapter.java b/app/src/main/java/com/skipping/activity/grade/GradeAdapter.java new file mode 100644 index 0000000..6e38f88 --- /dev/null +++ b/app/src/main/java/com/skipping/activity/grade/GradeAdapter.java @@ -0,0 +1,76 @@ +package com.skipping.activity.grade; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.recyclerview.widget.RecyclerView; + +import com.skipping.R; +import com.skipping.net.GradleBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Ming + * 3/18/22 + */ +public class GradeAdapter extends RecyclerView.Adapter { + private OnClick onClick; + private Context mContext; + private List list = new ArrayList<>(); + + public GradeAdapter(RecyclerView recyclerView) { + this.mContext = recyclerView.getContext(); + } + + public void setData(List list) { + this.list = list; + } + + @Override + public GradeAdapter.RecyclerHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(mContext).inflate(R.layout.grade_item, parent, false); + return new GradeAdapter.RecyclerHolder(view); + } + + @Override + public void onBindViewHolder(GradeAdapter.RecyclerHolder holder, int position) { + holder.title.setText("年级名称:" + list.get(position).getGroupName()); + holder.name.setText("年级ID:" + list.get(position).getGroupID()); + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onClick.click(list.get(position).getGroupID()); + } + }); + } + + @Override + public int getItemCount() { + return list.size(); + } + + class RecyclerHolder extends RecyclerView.ViewHolder { + TextView title; + TextView name; + + private RecyclerHolder(View itemView) { + super(itemView); + title = itemView.findViewById(R.id.title); + name = itemView.findViewById(R.id.name); + } + } + + public void setOnClickListener(OnClick onClick){ + this.onClick = onClick; + } + + public interface OnClick{ + void click(String id); + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/skipping/activity/list/ListActivity.java b/app/src/main/java/com/skipping/activity/list/ListActivity.java new file mode 100644 index 0000000..67f2845 --- /dev/null +++ b/app/src/main/java/com/skipping/activity/list/ListActivity.java @@ -0,0 +1,89 @@ +package com.skipping.activity.list; + +import android.content.Intent; +import android.os.Bundle; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.libs.fragment.BaseActivity; +import com.libs.network.CallBack; +import com.libs.network.Concise; +import com.libs.utils.LogUtil; +import com.skipping.Contants; +import com.skipping.R; +import com.skipping.activity.NetActivity; +import com.skipping.activity.clasz.ClassActivity; +import com.skipping.activity.detail.DetailActivity; +import com.skipping.activity.grade.GradeAdapter; +import com.skipping.net.API; +import com.skipping.net.ActivityBean; +import com.skipping.net.ActivityReqBean; +import com.skipping.net.BaseBean; +import com.skipping.net.GradleBean; +import com.tencent.mmkv.MMKV; + +import java.util.List; + +/** + * @author Ming + * 3/18/22 + */ +public class ListActivity extends BaseActivity { + private RecyclerView recyclerview; + private Concise concise; + private ListAdapter listAdapter; + + @Override + protected int getContentViewResId() { + return R.layout.activity_show; + } + + @Override + protected void initView() { + recyclerview = findViewById(R.id.recyclerview); + } + + @Override + protected void initData() { + String id = (String) getIntent().getBundleExtra("id").get("id"); + recyclerview.setLayoutManager(new LinearLayoutManager(this)); + listAdapter = new ListAdapter(recyclerview); + listAdapter.setOnClickListener(new ListAdapter.OnClick() { + @Override + public void click(String id) { + Intent intent = new Intent(ListActivity.this, DetailActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("id", id); + intent.putExtra("id", bundle); + startActivity(intent); + } + }); + recyclerview.setAdapter(listAdapter); + + MMKV kv = MMKV.defaultMMKV(); + concise = new Concise(Contants.BASE_URL) { + }.addHeader("Token", kv.decodeString(Contants.TOKEN)).build(); + ActivityReqBean bean = new ActivityReqBean(); + bean.setGenre(Contants.CLASS); + bean.setActivityType("timing"); + bean.setGroupID(id); + bean.setIndex(1); + bean.setPageSize(10); + bean.setStatus(Contants.UNFINISHED); + LogUtil.e("提交",bean); + concise.request(ListActivity.this, concise.api.getActivityList(bean), new CallBack>>() { + @Override + public void onSuccess(BaseBean> listBaseBean) { + listAdapter.setData(listBaseBean.getData()); + listAdapter.notifyDataSetChanged(); + } + + @Override + public void onFailed(Throwable e) { + + } + }); + + } +} diff --git a/app/src/main/java/com/skipping/activity/list/ListAdapter.java b/app/src/main/java/com/skipping/activity/list/ListAdapter.java new file mode 100644 index 0000000..50a9f22 --- /dev/null +++ b/app/src/main/java/com/skipping/activity/list/ListAdapter.java @@ -0,0 +1,86 @@ +package com.skipping.activity.list; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.recyclerview.widget.RecyclerView; + +import com.skipping.R; +import com.skipping.net.ActivityBean; +import com.skipping.net.GradleBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Ming + * 3/18/22 + */ +public class ListAdapter extends RecyclerView.Adapter { + private OnClick onClick; + private Context mContext; + private List list = new ArrayList<>(); + + public ListAdapter(RecyclerView recyclerView) { + this.mContext = recyclerView.getContext(); + } + + public void setData(List list) { + this.list = list; + } + + @Override + public ListAdapter.RecyclerHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false); + return new ListAdapter.RecyclerHolder(view); + } + + @Override + public void onBindViewHolder(ListAdapter.RecyclerHolder holder, int position) { + holder.title.setText("活动ID:" + list.get(position).getId() + ""); + holder.name.setText("活动名称:" + list.get(position).getName() + ""); + holder.orgid.setText("OrgID:" + list.get(position).getOrgID() + ""); + holder.greadid.setText("GreadID:" + list.get(position).getGreadID() + ""); + holder.classid.setText("ClassID:" + list.get(position).getClassID() + ""); + holder.preson.setText("人数:" + list.get(position).getPersonNumber() + ""); + holder.status.setText("状态:" + list.get(position).getStatus() + ""); + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onClick.click(list.get(position).getId() + ""); + } + }); + } + + @Override + public int getItemCount() { + return list.size(); + } + + class RecyclerHolder extends RecyclerView.ViewHolder { + TextView title, name, orgid, greadid, classid, preson, status; + + private RecyclerHolder(View itemView) { + super(itemView); + title = itemView.findViewById(R.id.title); + name = itemView.findViewById(R.id.name); + orgid = itemView.findViewById(R.id.orgid); + greadid = itemView.findViewById(R.id.greadid); + classid = itemView.findViewById(R.id.classid); + preson = itemView.findViewById(R.id.preson); + status = itemView.findViewById(R.id.status); + } + } + + public void setOnClickListener(OnClick onClick) { + this.onClick = onClick; + } + + public interface OnClick { + void click(String id); + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/skipping/net/API.java b/app/src/main/java/com/skipping/net/API.java index 3125815..e627b94 100644 --- a/app/src/main/java/com/skipping/net/API.java +++ b/app/src/main/java/com/skipping/net/API.java @@ -64,7 +64,7 @@ public interface API { * @return */ @GET("activity/detail") - Observable>> detailActivity(@Query("activityid") String id); + Observable> detailActivity(@Query("activityid") String id); /** * 上报 diff --git a/app/src/main/java/com/skipping/net/ActivityBean.java b/app/src/main/java/com/skipping/net/ActivityBean.java index 100dce7..2e71435 100644 --- a/app/src/main/java/com/skipping/net/ActivityBean.java +++ b/app/src/main/java/com/skipping/net/ActivityBean.java @@ -26,7 +26,7 @@ public class ActivityBean implements Serializable { * CreatedAt : 2022-03-14T08:38:21.495+08:00 */ - private Integer id; + private Integer ID; private String Name; private String ActivityType; private Integer Value; @@ -41,11 +41,11 @@ public class ActivityBean implements Serializable { private String CreatedAt; public Integer getId() { - return id; + return ID; } public void setId(Integer id) { - this.id = id; + this.ID = id; } public String getName() { @@ -147,7 +147,7 @@ public class ActivityBean implements Serializable { @Override public String toString() { return "ActivityBean{" + - "id=" + id + + "ID=" + ID + ", Name='" + Name + '\'' + ", ActivityType='" + ActivityType + '\'' + ", Value=" + Value + diff --git a/app/src/main/java/com/skipping/net/DetailActivityBean.java b/app/src/main/java/com/skipping/net/DetailActivityBean.java index 615c237..e4fc1d3 100644 --- a/app/src/main/java/com/skipping/net/DetailActivityBean.java +++ b/app/src/main/java/com/skipping/net/DetailActivityBean.java @@ -23,7 +23,7 @@ public class DetailActivityBean implements Serializable { * Candidates : [[{"PersonID":"329b20b046f5888bcd5165d115f1","Name":"xiaofang","StudentID":"1002","Score":12,"Detail":null},{"PersonID":"4557de13408aaf9057752285c81a","Name":"xiaohai","StudentID":"1003","Score":8,"Detail":null},{"PersonID":"4dee38df466fa8469f0e62f672fb","Name":"xiaoli","StudentID":"1004","Score":9,"Detail":null}]] */ - private Integer id; + private Integer ID; private String ActivityName; private String ActivityType; private Integer ActivityValue; @@ -34,11 +34,11 @@ public class DetailActivityBean implements Serializable { private List> Candidates; public Integer getId() { - return id; + return ID; } public void setId(Integer id) { - this.id = id; + this.ID = id; } public String getActivityName() { @@ -108,7 +108,7 @@ public class DetailActivityBean implements Serializable { @Override public String toString() { return "DetailActivityBean{" + - "id=" + id + + "id=" + ID + ", ActivityName='" + ActivityName + '\'' + ", ActivityType='" + ActivityType + '\'' + ", ActivityValue=" + ActivityValue + diff --git a/app/src/main/res/drawable/ic_launcher_round.png b/app/src/main/res/drawable/ic_launcher_round.png new file mode 100644 index 0000000..db5080a Binary files /dev/null and b/app/src/main/res/drawable/ic_launcher_round.png differ diff --git a/app/src/main/res/drawable/splash_preview.xml b/app/src/main/res/drawable/splash_preview.xml new file mode 100644 index 0000000..94ff8a8 --- /dev/null +++ b/app/src/main/res/drawable/splash_preview.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_detail.xml b/app/src/main/res/layout/activity_detail.xml new file mode 100644 index 0000000..f05ae48 --- /dev/null +++ b/app/src/main/res/layout/activity_detail.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_net.xml b/app/src/main/res/layout/activity_net.xml index f08110e..a2e7981 100644 --- a/app/src/main/res/layout/activity_net.xml +++ b/app/src/main/res/layout/activity_net.xml @@ -48,4 +48,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="活动成绩上传接口" /> + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_show.xml b/app/src/main/res/layout/activity_show.xml new file mode 100644 index 0000000..6607ef3 --- /dev/null +++ b/app/src/main/res/layout/activity_show.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml new file mode 100644 index 0000000..0071299 --- /dev/null +++ b/app/src/main/res/layout/activity_splash.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + +