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

listview에 EditText 보여지게 하는 방법 문의드립니다.

0 추천

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;
}

 
익명사용자 님이 2013년 10월 10일 질문

1개의 답변

0 추천

ViewHolder 를 멤버변수로 뺴보세요.

대충 뭐 이런 느낌?

private ViewHolder viewHolder = null;

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

 viewHolder = new ViewHolder();
 ...{후략}

 

밍이~ (5,780 포인트) 님이 2013년 10월 13일 답변
...