ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Android 실습 (7)
    Android 2022. 7. 14. 12:47

    < MyActivity2.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 MainActivity2 extends AppCompatActivity {
    
        // 사용자의 어댑터를 통해 완성된 내용이 최종적으로 띄워질 수 있는 Activity
        // 최종 결과를 띄울 ListView 필요!
        ListView listView2;
    
        // 상품이미지를 관리하기 위한 배열 생성
        int[] imgArr = {R.drawable.item1,R.drawable.item2,R.drawable.item3,
                R.drawable.item4,R.drawable.item5,R.drawable.item6,
                R.drawable.item7,R.drawable.item8,R.drawable.item9,
                R.drawable.item10,R.drawable.item11};
    
        // 제품이름을 관리하기 위한 배열 생성
        String[] proArr = {"텀블러", "슬리퍼", "폰케이스", "인형", "피규어", "안마봉",
            "마우스패드", "공책", "필통", "파우치", "옷"};
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
    
            listView2 = findViewById(R.id.listView2);
    
            // 데이터셋을 저장할 ArrayList 생성
            ArrayList<ProductVO> dataset = new ArrayList<>();
    
            // 데이터셋 생성하기
            for (int i = 0; i < imgArr.length; i++){
                dataset.add(new ProductVO(imgArr[i], proArr[i], i));
            }
    
            ProAdapter adapter = new ProAdapter(getApplicationContext(),R.layout.product_item,dataset);
    
            listView2.setAdapter(adapter);
    
        }
    }

     

    < ProAdapter.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.Button;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import java.util.ArrayList;
    
    public class ProAdapter extends BaseAdapter {
    
        // 1. 나만의 템플릿 만들기 (product_item.xml)
    
        // 2. 데이터를 관리할 수 있는 ProductVO.class 만들기
        //    - img, pro_Name, pro_Count
    
        // 3. 나만의 Adapter 생성
        //    - 기본적인 Adapter 기능을 가질 수 있도록 클래스에 구현
        //    - MainActivity2에서 어댑터에 필요한 내용을 넘겨줄 수 있는 생성자 메소드 생성
        //    - xml -> view 으로 변경될 수 있는 기능 불러오기
        //    - getView() 메소드의 기능 정의 후 return 하기
    
        private Context context;
        private int layout;
        private ArrayList<ProductVO> dataset;
    
        // ★ xml -> view 타입으로 변형시킬 수 있는 서비스 기능 필요!
        // -> Inflater
        private LayoutInflater inflater;
    
        public ProAdapter(Context context, int layout, ArrayList<ProductVO> dataset) {
            this.context = context;
            this.layout = layout;
            this.dataset = dataset;
    
            // inflater에 실제 변형을 위하여 필요한 서비스 연결하기
            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }
    
        @Override
        public int getCount() {
            return dataset.size();
        }
    
        @Override
        public Object getItem(int i) {
            return dataset.get(i);
        }
    
        @Override
        public long getItemId(int i) {
            return i;
        }
    
        // 최종화면으로 만들어질 view 작업 진행하기!
        // 1. xml -> view 타입으로 변형된 layout 가져오기
        // 2. 1번으로 부터 사용하고자 하는 개별 view id값 찾아오기!
        // 3. dataset을 통하여 띄워주고 싶은 내용을 2번에 연결하기!
        // 4. 완성된 view를 반환해서 보여주기!
        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
    
            view = inflater.inflate(layout, null);
    
            ImageView img_pro = view.findViewById(R.id.img_pro);
            TextView txt_proName = view.findViewById(R.id.txt_proName);
            TextView txt_proCount = view.findViewById(R.id.txt_proCount);
            Button btn_detail = view.findViewById(R.id.btn_detail);
    
            img_pro.setImageResource(dataset.get(i).getImg_pro());
            txt_proName.setText(dataset.get(i).getTxt_proName());
            txt_proCount.setText(dataset.get(i).getTxt_proCount()+"");
    
            return view;
        }
    
    }

     

    < ProductVO.java >

    package com.example.ex_0714;
    
    public class ProductVO {
    
        private int img_pro;
        private String txt_proName;
        private int txt_proCount;
    
        public ProductVO(int img_pro, String txt_proName, int txt_proCount) {
            this.img_pro = img_pro;
            this.txt_proName = txt_proName;
            this.txt_proCount = txt_proCount;
        }
    
        public int getImg_pro() {
            return img_pro;
        }
    
        public void setImg_pro(int img_pro) {
            this.img_pro = img_pro;
        }
    
        public String getTxt_proName() {
            return txt_proName;
        }
    
        public void setTxt_proName(String txt_proName) {
            this.txt_proName = txt_proName;
        }
    
        public int getTxt_proCount() {
            return txt_proCount;
        }
    
        public void setTxt_proCount(int txt_proCount) {
            this.txt_proCount = txt_proCount;
        }
    }

     

    'Android' 카테고리의 다른 글

    Android 실습 (9)  (0) 2022.07.18
    Android 실습 (8)  (0) 2022.07.15
    Android 실습 (6)  (0) 2022.07.14
    Android 실습 (5)  (0) 2022.07.13
    Android 이론 (3)  (0) 2022.07.13

    댓글

Designed by Tistory.