- 시스템서비스(SystemService)란?
cosntext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
->Service라는 것이 돌고 있다는 거다
즉, 화면이 없는 백그라운드 서비스가 돌고 있는데,
단말이 시작 되었을 때, 단말에서 기본적으로 실행시켜 놓는 서비스를 SystemService라고 한다!!
그 중에,
LayoutInflater라고 하는게 실행 되어있으니깐, 그 것을 가져다 쓰겠다는 거다.
(주의 - 근데 SystemService가 여러가지가 있으므로, 타입이 다른 것 일 수도 있으니깐 (LayoutInflater) 이렇게 형변환을 한거다.!!)
1. 결과 & 코드파일
2. 코드
- activity_main.xml -
- MainActivity.java -
- singer_item.xml -
- SingerItem.java -
- SingerItemView.java -
3. 똑같은 코드임
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = (ListView)findViewById(R.id.listView);
SingerAdapter adapter = new SingerAdapter();
adapter.addItem(new SingerItem("트와이스","010-1234-5678",R.drawable.icon01));
adapter.addItem(new SingerItem("노라조","010-9979-5678",R.drawable.icon01));
listView.setAdapter(adapter);
}
// 어댑터
class SingerAdapter extends BaseAdapter{
ArrayList<SingerItem> items = new ArrayList<SingerItem>();
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) { // 필요할 때 데이터 가져올 때? 몇번째 데이터 인지 준다
return items.get(position);
}
@Override
public long getItemId(int position) { // id라는 값이 있으면 그것을 줘라
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// 어댑터가 데이터를 관리하기때문에 데이터를 관리하는 어댑터가
// 화면에 보여질 각각의 item들을 위한 뷰를 만들어 달라는거.
SingerItemView view = new SingerItemView(getApplicationContext());
SingerItem item = items.get(position);
view.setName(item.getName());
view.setMobile(item.getMobile());
view.setImage(item.getResId());
return view;
// view를 리턴해 주면 그대로 item들이 보여 질 것이다.
}
// 리스트 추가
public void addItem(SingerItem item){
items.add(item);
}
}
}
public class SingerItemView extends LinearLayout {
TextView textView;
TextView textView2;
ImageView imageView;
public SingerItemView(Context context) {
super(context);
init(context);
}
public SingerItemView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context);
}
// 초기화를 위한 메소드
private void init(Context context){
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.singer_item,this,true); // true 라고 하면 바로 붙이는 거
textView = (TextView) findViewById(R.id.textView);
textView2 = (TextView) findViewById(R.id.textView2);
imageView = (ImageView) findViewById(R.id.imageView);
}
public void setName(String name){
textView.setText(name);
}
public void setMobile(String moblie){
textView2.setText(moblie);
}
public void setImage(int resId){
imageView.setImageResource(resId);
}
}
'■ Android > Tip' 카테고리의 다른 글
[Android] List - (2)스피너(Spinner) 사용법 (0) | 2020.01.07 |
---|---|
[Android] List - (1)리스트뷰(ListView) 사용법 - 클릭 이벤트, 재사용(재활용) (0) | 2020.01.07 |
[Android] Activity, Context 가져오는 방법 (0) | 2020.01.06 |
[Android] 브로드캐스트(BroadCast) - 2.전송, 3.권한을 사용하여 수신 (0) | 2020.01.04 |
[Android] 브로드캐스트(BroadCast) - 1.수신 (0) | 2020.01.02 |