- 시스템서비스(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);
    }
}