마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

arrayadapter에서 getview 오버라이드 시 누가호출했는지 어떻게 알수있을까요..

0 추천
public class AdptItem extends ArrayAdapter<ChildInfo> {
   private ArrayList<ChildInfo> arrayItem;
   private Context context;

   public interface onButtonClickListener{
      void onButtonClick(ChildInfo item);
      void onButtonClickDetail(ChildInfo item);
   }
   private onButtonClickListener adptCallback = null;

   public void setOnButteonClickListener(onButtonClickListener callback){
      adptCallback = callback;
   }

   public AdptItem(Context context, int resource, ArrayList<ChildInfo> objects) {
      super(context, resource, objects);
      this.arrayItem = objects;
      this.context = context;
   }

   public int getCount() {
      return arrayItem.size();
   }
   @Override
   public View getView(int position, View convertView, ViewGroup parent) {
      View v = convertView;

      if (v == null) {
         LayoutInflater li = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
//////이부분에서 누가호출했는지 알아내 inflate를 해줄 layout을 정해주고 싶습니다.
         v = li.inflate(R.layout.item, null);
      }
      final ChildInfo item = arrayItem.get(position);

      if(item != null){
         Button btn = (Button)v.findViewById(R.id.button1);
         Button btn_detail = (Button)v.findViewById(R.id.button_detail);
         TextView txt = (TextView) v.findViewById(R.id.text_item);
         txt.setText(item.name);
         btn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
               if(adptCallback !=null){
                  adptCallback.onButtonClick(item);
               }
            }
         });

         btn_detail.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               if(adptCallback !=null){
                  adptCallback.onButtonClickDetail(item);
               }
            }
         });
      }
      return v;
   }
}
오재은 (120 포인트) 님이 2015년 8월 31일 질문

1개의 답변

+1 추천
Adapter의 getView를 호출하는 것은 해당 Adapter가 등록된 AdapterView (ListView, GridView, ...) 라서 매번 바뀌는 것이 아닌데 누가 호출했는지 알고 싶다고 하는 상황이 먼지 궁금하네요. getView의 파라미터인 parent를 통해서도 확인하실수 있을겁니다.
회색 (21,340 포인트) 님이 2015년 9월 1일 답변
여러 ListView에서 하나의 Adapter를 사용할 예정인데
getVIew함수 중 inflate해줄 Layout을 정하기위해서 알고싶습니다.
...