-
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