ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Android 실습 (6)
    Android 2022. 7. 14. 10:51

    1. 템플릿 만들기 (xml 생성)

     

    2. 템플릿에 정리될 데이터셋 클래스 만들기 (UserVO)

     

    3. MainActivity 정의 (데이터 입력, Adapter 연결 .. )

     

    4. MyAdapter 정의

     

     

    < MainActivity.java >

    package com.example.ex_0714;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.widget.ListView;
    
    import java.util.ArrayList;
    
    public class MainActivity extends AppCompatActivity {
    
        // ListView 객체 선언
        ListView listView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
           listView = findViewById(R.id.listView);
    
            // 데이터셋 생성하기
            ArrayList<UserVO> dataset = new ArrayList<>();
    
            dataset.add(new UserVO(R.drawable.co,"감자", "감자"));
            dataset.add(new UserVO(R.drawable.co,"고구마", "고구마"));
            dataset.add(new UserVO(R.drawable.co,"호박", "호박"));
    
            // 1. 어플의 정보
            // 2. 사용할 레이아웃 -> 우리가 만든 템플릿! (kakao_list.xml)
            // 3. 데이터셋
            MyAdapter adapter = new MyAdapter(getApplicationContext(),R.layout.kakao_list,dataset);
    
            listView.setAdapter(adapter);
    
        }
    }

     

    < MyAdapter.java >

    package com.example.ex_0714;
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import androidx.core.content.ContextCompat;
    
    import java.util.ArrayList;
    
    public class MyAdapter extends BaseAdapter {
    
        // 사용자에 맞는 Adapter 생성하기
        // 1. 기본 베이스(BaseAdapter)로 만들어져 있는 Adapter 물려받아서 생성하기!
    
        // 2. Adapter라면 가지고 있어야 하는 3가지 객체 선언!
        private Context context; // 현재 어플에 정보를 저장할 수 있는 객체
        private int layout; // 사용하고자 하는 레이아웃을 담을 객체
        private ArrayList<UserVO> dataset; // 저장되어야 하는 데이터를 관리하는 곳
    
        // xml -> View 형태로 변환시킬 수 있는 기능!
        private LayoutInflater inflater;
    
        // Adapter용 생성자 메소드
        public MyAdapter(Context context, int layout, ArrayList<UserVO> dataset) {
            this.context = context; // MainActivity의 정보 저장
            this.layout = layout; // kakao.list.xml 저장
            this.dataset = dataset; // 감자, 고구마, 호박 데이터셋 저장
    
            // getSystemService() 반환의 형태 -> Object -> 다운캐스팅 !
            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }
    
        @Override
        public int getCount() {
            // 데이터셋의 총 갯수를 세어주는 메소드
            return dataset.size(); // 3
        }
    
        @Override
        public Object getItem(int i) {
            // Item의 위치를 반환하는 메소드
            return dataset.get(i);
        }
    
        @Override
        public long getItemId(int i) {
            // Item의 id를 반환!
            return i;
        }
    
        // getView 메소드는 필수 구현! ★★★★★
        // listview에 들어갈 item 내용을 초기화 하고,
        // 화면에 실제 띄워질 수 있도록 값들을 return 하는 메소드
        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            // i : 위치
            // view : 실제로 띄워져야 하는 화면
            // viewGroup : listview의 의미
    
            view = inflater.inflate(layout, null);
    
            // view에서 지정된 이미지, 텍스트 등의 위치값 찾아오기!
            // -> 가지고 온 데이터셋에 있는 내용들을 각각의 view에 연결하기 위해서
            // -> 해당 view들의 위치를 알고 있어야 한다!
            ImageView img = view.findViewById(R.id.img2);
            TextView txt_name = view.findViewById(R.id.txt_name2);
            TextView txt_title = view.findViewById(R.id.txt_title2);
    
            // 가지고온 위치값에 원하는 데이터 연결하기!
            img.setImageResource(dataset.get(i).getImg());
            txt_name.setText(dataset.get(i).getName());
            txt_title.setText(dataset.get(i).getTitle());
    
            return view;
        }
    
    
    }

     

    < UserVO.java >

    package com.example.ex_0714;
    
    public class UserVO {
    
        // 데이터셋을 관리하기 위하여 생성된 UserVO
        // 프로필 이미지, 이름, 상태 메세지
        private int img;
        private String name;
        private String title;
    
        // 생성자 및 getter/setter 메소드 생성 단축키 : alt + insert
    
        public UserVO(int img, String name, String title) {
            this.img = img;
            this.name = name;
            this.title = title;
        }
    
        public int getImg() {
            return img;
        }
    
        public void setImg(int img) {
            this.img = img;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getTitle() {
            return title;
        }
    
        public void setTitle(String title) {
            this.title = title;
        }
    }

     

    'Android' 카테고리의 다른 글

    Android 실습 (8)  (0) 2022.07.15
    Android 실습 (7)  (0) 2022.07.14
    Android 실습 (5)  (0) 2022.07.13
    Android 이론 (3)  (0) 2022.07.13
    Android 실습 (5)  (0) 2022.07.13

    댓글

Designed by Tistory.