<MainActivity>
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>
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 으로 변경될 수 있는 기능 불러오기 (Inflater)
// - getView() 메소드의 기능 정의 후 return 하기
private Context context;
private int layout;
private ArrayList<ProductVO> dataset;
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>
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;
}
}