listview 항목에 TextView, radio1, radio2, button 으로 구성되어있습니다.
getView에서 radio2를 체크하면 바로 아래 숨겨진 EditText 를 띄우려고 하는데 아래소스좀 봐주세요,,
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = new ViewHolder();
// 캐시된 뷰가 없을 경우 새로 생성하고 뷰홀더를 생성한다
if(convertView == null)
{
convertView = inflater.inflate(resId, null);
viewHolder.tv_contents = (TextView) convertView.findViewById(R.id.tv_item_contents);
viewHolder.iv_photo = (ImageView) convertView.findViewById(R.id.iv_item_photo);
viewHolder.rg_state = (RadioGroup) convertView.findViewById(R.id.radio_group);
convertView.setTag(viewHolder);
}
// 캐시된 뷰가 있을 경우 저장된 뷰홀더를 사용한다
else
{
viewHolder = (ViewHolder) convertView.getTag();
}
// set content
String name = arrData.get(position).iName;
String sort = arrData.get(position).iSort;
String code = arrData.get(position).iCode;
// 타이틀
viewHolder.tv_contents.setText(sort+") "+name);
// radio1/radio2에 따른 처리
viewHolder.rg_state.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// radio2일때 입력창 보임.
if(checkedId == R.id.rb_item_error_radio){
Toast.makeText(mContext, "라디오체크 : "+position, Toast.LENGTH_SHORT).show();
//viewHolder.check_layout.setVisibility(View.VISIBLE);
// 여기가 문제입니다. ㅠㅠ 위에 주석을 풀면 viewHolder 를 final 을 붙이라고 하고, 붙이면 위에서 에러가 납니다. 여기를 어떻게 처리해야 선택한 row 아래에만 EditText 를 보일수 있을까요???
}
}
});
return convertView;
}
/* ViewHolder
* getView의 속도 향상을 위해 쓴다.
* 한번의 findViewByID 로 재사용 하기 위해 viewHolder를 사용 한다.
*/
class ViewHolder{
public TextView tv_contents;
public ImageView iv_photo;
public RadioGroup rg_state;
}