-
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