(2편)시간표 삭제->강의 경쟁률, 학점 제한
1편은 전 블로그 자료 참조 https://s2jinny.tistory.com/17
수강신청 어플 만들기 - Android Studio with JAVA(1)
(1편)회원가입->로그인(중복체크)->공지사항->강의 목록->시간표 추가 및 중복체크->시간표 조회 (2편)시간표 삭제->강의 경쟁률, 학점 제한->강의 인기 순위 리스트->스플래시화면->어플 개발 오늘
s2jinny.tistory.com
모든 코드를 여기에 적기보다 일부 코드만 골라서 기록할 예정이고, 최대한 간단하게 설명할 예정.
완벽한 코드는 깃허브에 ~❤
1. 경쟁률
coursePersonnel.setText("신청인원: "+courseList.get(i).getCourseRival()+"/"
+courseList.get(i).getCoursePersonnel());
int rate=((int) (((double)courseList.get(i).getCourseRival()*100/courseList.get(i).getCoursePersonnel())+0.5));
courseRate.setText("경쟁률: "+rate+"%");
if(rate<20){
courseRate.setTextColor(parent.getResources().getColor(R.color.colorSafe));
}
else if(rate<=50){
courseRate.setTextColor(parent.getResources().getColor(com.google.android.material.R.color.design_default_color_primary));
}
else if(rate<=100){
courseRate.setTextColor(parent.getResources().getColor(R.color.colorDanger));
}
else if(rate<=150){
courseRate.setTextColor(parent.getResources().getColor(R.color.colorWarning));
}
else{
courseRate.setTextColor(parent.getResources().getColor(R.color.colorRed));
}
}
rate를 만들어서 경쟁률을 나타낸다. 현재 강의를 등록한 사람들 / 전체 인원의수로 0.5 더해서 소수점 반올림 됨 rate에 경쟁률이 들어간다. 20보다 작으면 안전한 색(초록)을, 50보다 작거나 같으면 보라색을, 100보다 작으면 핑크색을, 150보다 크다면 빨간색이 들어가도록 함.
다음은 StatisticsCourseListAdapter 의 한 부분이다. (삭제 버튼 클릭시 )
Button deleteButton=(Button)v.findViewById(R.id.deleteButton);
deleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonResponse = new JSONObject(response);
boolean success = jsonResponse.getBoolean("success");
if (success) {
AlertDialog.Builder builder = new AlertDialog.Builder(parent.getActivity());
AlertDialog dialog = builder.setMessage("강의가 삭제되었습니다.")
.setPositiveButton("확인", null)
.create();
dialog.show();
StatisticsFragment.totalCredit -= courseList.get(i).getCourseCredit();
StatisticsFragment.credit.setText(StatisticsFragment.totalCredit+"학점");
courseList.remove(i);
notifyDataSetChanged();
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(parent.getActivity());
AlertDialog dialog = builder.setMessage("강의 삭제 실패했습니다.")
.setNegativeButton("다시시도", null)
.create();
dialog.show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
DeleteRequest deleteRequest = new DeleteRequest(userID, courseList.get(i).getCourseID() + "", responseListener);
RequestQueue queue = Volley.newRequestQueue(parent.getActivity());
queue.add(deleteRequest);
}
});
return v;
}
2. 시간표 강의 삭제
삭제 버튼 클릭 시 이 부분으로 삭제해줌.
StatisticsFragment.totalCredit -= courseList.get(i).getCourseCredit();
StatisticsFragment.credit.setText(StatisticsFragment.totalCredit+"학점");
courseList.remove(i);
notifyDataSetChanged();
requestQueue로 서버와 연결 ! (DeleteRequest.java 만듦)
DeleteRequest deleteRequest = new DeleteRequest(userID, courseList.get(i).getCourseID() + "", responseListener);
RequestQueue queue = Volley.newRequestQueue(parent.getActivity());
queue.add(deleteRequest);
3. 학점 제한
Button addButton=(Button)v.findViewById(R.id.addButton);
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
boolean validate =false; //현재 강의를 추가할수잇는지없는지
validate=schedule.validate(courseList.get(i).getCourseTime());
//현재 추가하려는 강의에 시간표를 넣음으로서 타당성을 검증함.
//String userID = MainActivity.userID; //회원아이디 가져옴
if(!alreadyln(courseIDList,courseList.get(i).getCourseID())){
//내가 신청했던 강의 아이디속에서 현재 신청하려는 강의 아이디가 포함되어있다면?
AlertDialog.Builder builder=new AlertDialog.Builder(parent.getActivity());
AlertDialog dialog=builder.setMessage("이미 추가한 강의입니다.")
.setPositiveButton("다시시도",null)
.create();
dialog.show();
}
//학점 제한
else if(totalCredit+courseList.get(i).getCourseCredit()>24){
//학점이 24학점 이상이라면
AlertDialog.Builder builder=new AlertDialog.Builder(parent.getActivity());
AlertDialog dialog=builder.setMessage("24학점을 초과할 수 없습니다.")
.setNegativeButton("다시시도",null)
.create();
dialog.show();
}
else if(validate==false){
AlertDialog.Builder builder=new AlertDialog.Builder(parent.getActivity());
AlertDialog dialog=builder.setMessage("시간표가 중복됩니다.")
.setNegativeButton("다시시도",null)
.create();
dialog.show();
}
else{
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonResponse = new JSONObject(response);
boolean success = jsonResponse.getBoolean("success");
if (success) {
AlertDialog.Builder builder = new AlertDialog.Builder(parent.getActivity());
AlertDialog dialog = builder.setMessage("강의가 추가되었습니다.")
.setPositiveButton("확인", null)
.create();
dialog.show();
//강의 직접 추가하기 해당 강의 번호 등록.
courseIDList.add(courseList.get(i).getCourseID());
schedule.addSchedule(courseList.get(i).getCourseTime());
totalCredit+=courseList.get(i).getCourseCredit();
//토탈 크리딕에 현재 추가한 학점을 추가한다.
}
else {
AlertDialog.Builder builder = new AlertDialog.Builder(parent.getActivity());
AlertDialog dialog = builder.setMessage("강의추가에 실패했습니다.")
.setNegativeButton("확인", null)
.create();
dialog.show();
}
기존의 courseListAdapter 에 추가버튼 부분에 24 학점 이상이면 강의 추가 할 수 없게 만듦.
24학점이하이면 현재 강의 학점을 totalCredit(학점)에 추가하는 코드
totalCredit+=courseList.get(i).getCourseCredit();
![]() |
![]() |
![]() |
![]() |
!!다음 계속3편...(강의 인기 순위 리스트->스플래시화면)!!
'안드로이드 스튜디오' 카테고리의 다른 글
수강신청 어플 만들기 - Android Studio with JAVA(3)-1 (0) | 2022.12.18 |
---|---|
안드로이드 스튜디오 No speakable text present오류 - contentDescription (6) | 2022.12.17 |
수강신청 어플 만들기 - Android Studio with JAVA(1) (2) | 2022.12.11 |
안드로이드 스튜디오 WEBVIEW & 하이브리드앱과 네이티브앱 (0) | 2022.12.10 |
TextView 크기 자동 조절 AutoResizeTextView오픈소스 라이브러리 (0) | 2022.12.10 |