* 해당 포스팅은 커넥트 재단의 edwith-[부스트 코스] 안드로이드 프로그래밍의 강의 자료를 바탕으로 작성되었습니다.
<프로젝트 B. 좋아요와 한줄평 리스트>
요구사항 (Requirements)
**부스트코스 학습을 기반으로 진행하는 프로젝트이기에 JAVA언어를 활용하여 개발하여야 합니다.
이벤트와 리스트
1) 좋아요/싫어요 이미지를 터치했을 때 숫자가 바뀌고 이미지의 선택 상태도 바뀌어 표시되도록 합니다.
- 좋아요 이미지를 터치하면 좋아요 숫자가 1 증가하도록 하고, 선택 상태로 바뀌어 표시합니다.
- 싫어요 이미지를 터치하면 싫어요 숫자가 1 증가하도록 하고, 선택 상태로 바뀌어 표시합니다.
- 좋아요가 선택된 상태에서 싫어요 이미지를 터치하면 좋아요 숫자가 1 감소하고 좋아요 버튼이 미선택 상태로 바뀌게 합니다.
- 싫어요가 선택된 상태에서 좋아요 이미지를 터치하면 싫어요 숫자는 1 감소하고 싫어요 버튼이 미선택 상태로 바뀌게 합니다.
2) 한줄평을 리스트 형태로 보여줍니다. 리스트의 각 아이템을 위한 화면 레이아웃 구성은 아래 그림을 참고하세요.
3) 한줄평 ‘작성하기’와 ‘모두보기’ 버튼을 터치하면 토스트 메시지로 버튼이 눌렸음을 알려줍니다.
팁
요구사항 1번 : 좋아요 버튼과 싫어요 버튼을 클릭했을 때 일어나는 일이 무엇인지 생각을 한번 해봐야 합니다.
1-1) 좋아요 버튼과 싫어요 버튼이 두개 다 클릭된 상태가 아닌 경우
1-2) 좋아요 버튼은 클릭, 싫어요 버튼은 클릭 안된 경우 -> 싫어요 버튼을 눌리면 좋아요 버튼 선택 해제, 싫어요 버튼 선택 설정(좋아요 카운터 1 감소, 싫어요 카운터 1 증가)
1-3) 싫어요 버튼은 클릭, 좋아요 버튼은 클릭 안된 경우 -> 좋아요 버튼을 눌리면 싫어요 버튼 선택 해제, 좋아요 버튼 선택 설정(싫어요 카운터 1 감소, 좋아요 카운터 1 증가)
1-4) 둘 다 클릭된 경우는 없음.
이번 강의 Summary 강의에서 반만 나왔는데 여기에 else if 로직만 추가했더니 쉽게 해결되었습니다.
요구사항 2번 : 한줄평 내용을 리스트 형태로 보여주기
- 리스트뷰를 보여주기 위해서는 BaseAdapter를 상속받은 클래스가 필요합니다. MainActivity에 Inner클래스를 생성합니다.
//리스트뷰 어댑터
class CommentAdapter extends BaseAdapter{
ArrayList<CommentItem> items = new ArrayList<CommentItem>();
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public void addItem(CommentItem item){
items.add(item);
}
@Override
public View getView(int position, View view, ViewGroup viewGroup) {
//리스트뷰 부분을 보여주는 부분
CommentItemView resultView = new CommentItemView(getApplicationContext());
CommentItem item = items.get(position);
resultView.setName(item.getName());
resultView.setContent(item.getContent());
resultView.setReviewRating(item.getNumStar());
return resultView;
}
}
- CommentItem 클래스 : 한줄평을 구성하는 자료형을 선언해놓은 클래스
- CommentItemView 클래스 : xml 파일 레이아웃을 Inflater 하는 클래스
-> 위 두개 클래스는 별도로 만드셔야 합니다. 이름은 마음대로 지으셔도 됩니다.
- CommentAdapter 클래스 : 위의 소스코드와 같이 클래스를 하나 생성합니다. 저는 한줄평의 구성요소(사용자 ID, 내용, 레이팅 바 개수)를 이렇게 설정했습니다.
한줄평 리스트 데이터 삽입 -> addItem 메소드를 활용하여 이름, 내용, 별 개수 설정 순으로 입력하였습니다. (하드코딩)
* 나머지 소스들은 생략하였습니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CommentAdapter adapter = new CommentAdapter();
adapter.addItem(new CommentItem("seonhong", "재밌습니다.", (float) 2.5));
adapter.addItem(new CommentItem("junseong", "흐,, 재미없다..", (float) 0.5));
reviewListView.setAdapter(adapter);
}
요구사항 3번 : 작성하기, 모두보기 버튼 누를 시 토스트 메시지 띄우기
public void buttonOnClicked(View v){
Toast.makeText(getApplicationContext(), "내용", Toast.LENGTH_SHORT).show();
}
* 자세한 내용은 댓글 달아주시면 남겨드리겠습니다. 감사합니다.
영상
링크 : www.boostcourse.org/mo316/project/13/content/11#summary
'Android' 카테고리의 다른 글
[안드로이드 스튜디오 : Socket 활용, 간단한 쿵쿵따 게임 앱 만들기 with 리눅스 서버(Ubuntu,우분투), 안드로이드 클라이언트 (0) | 2021.02.18 |
---|---|
[안드로이드 스튜디오 : TextView, EditText, Button 사용하기 with Kotlin] (0) | 2021.02.18 |
[부스트코스:안드로이드 프로그래밍] 프로젝트 A . 영화 상세 화면 만들기 (0) | 2021.02.02 |
[안드로이드 스터디 : 수강신청 앱 만들기2] (0) | 2021.01.30 |
[안드로이드 스터디 : 수강신청 앱 만들기] (2) | 2021.01.30 |