public View getView(final int _position, View _convertView, ViewGroup _parent)
{
if(_convertView==null)
{
if(getItemViewType(_position)==0) // 사진 래이아웃
{
// 레이아웃 생성
_convertView=View.inflate(AddContactActivity.this, R.layout.add_contact_photoitem, null);
_convertView.setTag(new MyTextWatcher(_position));
}
else
{
_convertView=View.inflate(AddContactActivity.this, R.layout.add_contact_item, null);
_convertView.setTag(new MyTextWatcher(_position));
}
}
if(getItemViewType(_position)==0) // 사진 래이아웃
{
TextView p_tv = (TextView)_convertView.findViewById(R.id.p_textview);
EditText p_et = (EditText)_convertView.findViewById(R.id.p_edittext);
TextView p_tv1 = (TextView)_convertView.findViewById(R.id.p_textview1);
EditText p_et1 = (EditText)_convertView.findViewById(R.id.p_edittext1);
p_tv.setText(m_data.header.get(_position));
p_tv1.setText(m_data.header.get(_position+1));
MyTextWatcher tw = (MyTextWatcher) _convertView.getTag();
tw.setPosition(_position);
p_et.addTextChangedListener(tw);
if(_position==HEADER_TYPE_PHONE)
{
p_et.setInputType(EditorInfo.TYPE_CLASS_PHONE);
}
else
{
p_et.setInputType(EditorInfo.TYPE_CLASS_TEXT);
}
if(m_data.val!=null)
{
p_et.setText(m_data.val.get(_position));
p_et1.setText(m_data.val.get(_position+1));
CLog.d("set text"+_position+" as "+m_data.val.get(_position));
}
}
else
{
// 데이터 집어 넣기
TextView header=(TextView) _convertView.findViewById(R.id.header);
header.setText(m_data.header.get(_position+1));
MyTextWatcher tw=(MyTextWatcher) _convertView.getTag();
tw.setPosition(_position+1);
EditText val=(EditText) _convertView.findViewById(R.id.val);
val.addTextChangedListener(tw);
if(_position==HEADER_TYPE_PHONE)
{
val.setInputType(EditorInfo.TYPE_CLASS_PHONE);
}
else
{
val.setInputType(EditorInfo.TYPE_CLASS_TEXT);
}
if(m_data.val!=null)
{
val.setText(m_data.val.get(_position+1));
CLog.d("set text"+_position+" as "+m_data.val.get(_position));
}
}
cnt++;
return _convertView;
size가 변경되는 데이터가 있는데요
사이즈를 구해올수는 있습니다.
헌데 사이즈를 구해서 잡아놓고 한번의 view가 생성될 때 count를 ++ 하여 수를 세고
사이즈가 카운트보다 작아지면 convertView를 리턴하는 식으로 구성했습니다.
이러니 stackoverflow에러가 나버리네요.. 물론 아무것도 없는 몸통을 계속 리턴하니 이런건 알겠는데..
이걸 안쓰자니 outofbounds고 이걸 하면 overflow 인데.. getView는 분명 View 메소드라 그냥 return도 안먹는겁니다..
뷰 데이터 사이즈만큼 뷰를 생성후 그만 생성하려면 어떻게해야하나요?
위에꺼는 size체크안하고 cnt만 넣어논 상태입니다.;