상세 컨텐츠

본문 제목

[프로젝트B 좋아요와 한줄평 리스트] 학습 내용 정리

본문

*해당 포스팅은 커넥트 재단의 edwith-[부스트코스]안드로이드 프로그래밍의 강의 자료를 바탕으로 작성되었습니다.

 

 

                                                                                                                                                                                             

 

 

 

                                                                                                                                                                                              

 

프로젝트 B에서 구현해야 할 화면

 

 

핵심 포인트

1. setOnClickListener의 사용과 적절한 IF문 활용

 

2. 인플레이션과 리스트뷰 이해하기

 

3. 토스트 메시지 띄우기

 

 

 

 

 

1. setOnClickListener의 사용과 적절한 IF문 활용

 

 

 

 

 

1. activity_main.xml에 있는 좋아요 버튼과 싫어요 버튼 , 숫자를 나타내는 TextView 두 개의 아이디를 이해하기 쉽게 입력합니다.

 

2. MainActivity.java에서  findViewById를 위에 있는 Id를 이용하여 찾아줍니다. 그리고 setOnClickListener를 사용하고 If문을 사용하여, 좋아요 버튼이 누를 시 좋아요 텍스트뷰의 숫자가 올라가고 한 번 더 누르면 내려갑니다.

 

 

 

2. 인플레이션과 리스트뷰 이해하기

 

  CommentAdapter adapter = new CommentAdapter();
        listView.setAdapter(adapter);

 

 

 리스트뷰라는 것은 데이터를 자기 스스로 가지지 않고 껍데기에 불과하여 데이터를 보관하고 있는 어댑터라는 것이 필요합니다. 그래서 현재 위에 코드는 리스트뷰가 현재 어댑터라는 것을 알아서 데이터를 보관할 수 있다는 것을 알게 되었습니다.

 

  class CommentAdapter extends BaseAdapter{
        ArrayList<Commentitem> items  = new ArrayList<Commentitem>();

        @Override
        public int getCount() {
            return items.size();
        }

        public void addItem(Commentitem item){
            items.add(item);
        }

        @Override
        public Object getItem(int position) {
            return items.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            Commentitemview view = new Commentitemview(getApplicationContext());

 

이 어댑터는 원래 제공하는 BaseAdapter를 상속받아서  ArrayList<   > 안에 있는 아이템의 개수를 세어주는 역할과 그것이 보이게 하는 역할을 합니다. 그리고 < > 안에 있는 함수는 만약 아이템이 하나 일시에는 String으로 선언하면 되지만 아이템이 많을 경우에는

 

public class Commentitem {
    String name;
    String time;
    String Comment;
    String reccommend;
    String report;

  }

 

 

 

이와 같이 Commentitem.java파일을 하나 만들어서 아이템들이 무엇이 있는지 선언해줍니다. 

 

 

 

 

 

 

현재 구현해야 할 화면에서 리스트 뷰안에 아이템이 총 5개 정도 있기 때문에 Layout에서 한 소스파일을 만들어서 이러한 디자인으로 구현한 후  이 디자인을 화면에 보이게 할 java파일로 가서 인플레이터 해줍니다. 

 

 

public void init(Context context){
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        inflater.inflate(R.layout.comment_item_view,this,true);

         textView = (TextView)findViewById(R.id.textview);
         textView2 = (TextView)findViewById(R.id.textview2);
         textView3 = (TextView)findViewById(R.id.textview3);
         textView4 = (TextView)findViewById(R.id.textview4);
         textView5 = (TextView)findViewById(R.id.textview5);

 

Layout에 디자인으로 구현한 아이템이 총 5개이기 때문에 java에서 인플레이터를 사용하면 Layout에 있는 아이템들을 선언할 수 있습니다. 이런 식으로 5개의 아이템을 finViewById를 이용하여 찾아줍니다.

 

 

 

 

이렇게 되면 아이템들을 인플레이터 시켰고 , 그리고 어뎁터에서 <> 안에 아이템들의 집합의 생성자를 만들어 주었기 때문에  MainActivity.java에서 getView라는 메서드에서

    public View getView(int position, View convertView, ViewGroup parent) {
            Commentitemview view = new Commentitemview(getApplicationContext());

            Commentitem item = items.get(position);
            view.setName(item.getName());
            view.setTime(item.getTime());
            view.setComment(item.getComment());
            view.setReccommend(item.getReccommend());
            view.setReport(item.getReport());

 

이런 식으로 보이게 만드는 함수를 사용합니다.

 

 

  CommentAdapter adapter = new CommentAdapter();
        adapter.addItem(new Commentitem("kmy71**","10분전","적당히 재밌다. 오랜만에 잠 안오는 영화 봣네요.","추천 0","신고하기" ));
   

 

그리고 이런 식으로 추가를 해주면 리스트 뷰안에 아까 디자인했던 5개의 데이터가 보이는 상태로 나오게 됩니다. 리스트뷰라는 껍데기에 어뎁터가 데이터를 관리해주는 형식이라고 생각하면 될 것 같습니다.

 

3. 토스트 메시지 띄우기

 

 

 

 

‘모두 보기’ 버튼을 터치하면 토스트 메시지로 버튼이 눌렸음을 알려줍니다.

먼저 모두 보기의 버튼에 Id를 부여합니다(자기가 알아볼 수 있는 Id면 더욱 좋은 것 같습니다) 

 

 

Main.java로 이동하여 FindViewById를 이용하여 자기가 작성한 Id를 찾아주고 setOnClickListener를 사용하여 이런 식으로 사용하면 작성하기 버튼을 누를 시 "작성하기 버튼을 눌렀습니다"라는 토스트 메시지가 나옵니다.

 

     allookbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(),"작성하기를 버튼을 눌렀습니다.",Toast.LENGTH_LONG).show();
            }
        });

 

 

 

 

                                                                                                                                                                                              

 

이번 프로젝트에서는 난이도가 많이 올라갔다고 느꼈습니다. 첫 번째로 좋아요 버튼을 클릭하고 다시 좋아요 버튼을 누르면 줄어드는 코드를 적는 것은 생각보다 쉬웠지만 싫어요 버튼이 눌러져 있는 상태에서 좋아요 버튼을 누르면 하나는 올라가고 하나는 내려가는 코드를 구현하는 것이 생각보다 어려웠습니다. 여기에서는 Id를 잘 정하고 자기가 잘 알 수 있는 변수명과 메서드를 작성하는 것이 중요하다고 생각했습니다. 그리고 인플레이션과 어뎁터의 경우에는 이번에 2번 정도 반복해서 들어서 조금 이해하기 쉬웠지만 여전히 어려운 부분인 것 같습니다. 다시 한번 더 반복해서 들을 필요가 있을 것 같습니다.

관련글 더보기

댓글 영역