안드로이드 프로그래밍[JAVA Code]/Fragment

Fragment : Adapter 에서 View 에 대한 정리

훈츠 2019. 12. 12. 17:13
반응형

Fragment 에서 XML 파일을 부분화면으로 혹은 전체 화면으로 붙이기 위해서 Inflation 이라는 작업을 거쳐야 하는데 adapter나 기타 View 를 붙여넣어야 하는 경우에 View 를 return 하는 Java 파일을 만들어서 붙이는데 헷갈려서 정리하기 위해서 기록 한다. 현재 까지 이해하고 있는 범위는 adapter 같이 view 를 돌려 받아야 하는 경우에만 추가로 view를 리턴 받을수 있는 View 자바 파일을 만들고 이용하면 된다. 

1) View 자바 파일 코드 : 최상위 붙일 Layout 을 상속한다. inflation 작업하고, 접근 할수있는 set 메소드를 만든다. 

 

public class SingerItemView extends LinearLayout {
    ImageView imageView;
    TextView textView;
    TextView textView2;

    public SingerItemView(Context context) {
        super( context );
        init(context);

    }

    public SingerItemView(Context context, 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 );

        imageView = (ImageView) findViewById( R.id.imageView );
        textView = (TextView) findViewById( R.id.textView );
        textView2 = (TextView) findViewById( R.id.textView2 );

    /* 외부에서 set할수 있도록 setName,mobile,image 메소드생성  */
    }
    public void setName(String name){
        textView.setText(name);
    }
    public void setMobile(String mobile){
        textView2.setText( mobile );
    }

    public void setImageView(int resId){
        imageView.setImageResource( resId );
    }

}

2) Adapter 코드 : BaseAdapter 를 상속하는 Adpater 클래스 만든다. getView 코드를 보면 adpter에 설정값을 연결시켜 값을 쓰고 있다. 

 class SignerAdpter extends BaseAdapter {
        ArrayList<SignerItem> items = new ArrayList<SignerItem>(  );

        public void addItem(SignerItem item){
                items.add( item );
        }

        @Override
        public int getCount() {
            return items.size();
        }

        @Override
        public Object getItem(int position) {
            return items.get( position );
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            SingerItemView view =  new SingerItemView(getApplication());

            SignerItem item = items.get( position );
            view.setName( item.getName() );
            view.setMobile( item.getMobile() );
            view.setImageView( item.getResId() );

            return view;
        }
    }

}

 

반응형