<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 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.cookie_img,"최지연","★벼리씨 생일 축하해요★"));
dataset.add(new UserVO(R.drawable.cookie_img,"김운비","★벼리씨 생일 축하해요★"));
dataset.add(new UserVO(R.drawable.cookie_img,"임경남","★벼리씨 생일 축하해요★"));
// 1. 어플의 정보
// 2. 사용할 레이아웃 -> 우리가 만든 템플릿! (kakao_list_xml)
// 3. 데이터셋
MyAdapter adapter = new MyAdapter(getApplicationContext(),R.layout.kakao_list, dataset);
listview.setAdapter(adapter);
}
}
<MyAdapter>
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 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();
}
@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.img);
TextView txt_name = view.findViewById(R.id.txt_name);
TextView txt_title = view.findViewById(R.id.txt_title);
// 가지고온 위치값에 원하는 데이터 연결하기!
img.setImageResource(dataset.get(i).getImg());
txt_name.setText(dataset.get(i).getName());
txt_title.setText(dataset.get(i).getTitle());
return view;
}
}
<UserVO>
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;
}
}
'안드로이드' 카테고리의 다른 글
안드로이드-이클립스 서버 통신 (0) | 2022.07.15 |
---|---|
Volley (0) | 2022.07.15 |
데이터 나열 및 삭제 (0) | 2022.07.13 |
Adapter View (0) | 2022.07.13 |
PlainText 내용 TextView에 띄우기 & enter 사용시 이벤트 작동 (0) | 2022.07.13 |