안녕하세요.
CustomView로 ListView를 만들어 onListItemClick시 다이얼로그내 EditText에 내용을 기입하는 형식으로 짰는데
키패드를 올릴경우 리스트가 엉켜버리는 현상이 나타나고 있습니다.
간단하게 정리하면 리스트를 뿌리고 이벤트 줬을때 EditText가 있는 Dialog가 뜨고
EditText에 포커스를 줘서 키패드를 띄웠을때 원래 리스트가
11111
-------
22222
-------
33333
-------
44444
--------
이렇게 리스트가 나올때 키패드를 올리면
22222
--------
33333
-------
44444
-------
11111
-------
이런 형식으로 갑자기 바뀌고 있습니다.
ListView내에 getView함수이고
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if(convertView == null)
{
int res = R.layout.add_buddy_edit_text;
convertView = mInflater.inflate(res, parent, false);
TextView txt = (TextView)convertView.findViewById(R.id.add_buddy_item_title);
value = (TextView)convertView.findViewById(R.id.add_buddy_item_editor);
txt.setText(arInfo.get(position));
txt.setTextColor(color);
}
return convertView;
}
onListItemClick 함수입니다.
protected void onListItemClick(ListView l, final View v, final int position, long id) {
// TODO Auto-generated method stub
AlertDialog.Builder builder;
AlertDialog alertDialog;
final TextView listValue = (TextView) v.findViewById(R.id.add_buddy_item_editor);
LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.add_buddy_input_dialog, (ViewGroup)findViewById(R.layout.add_buddy_form));
final EditText edit = (EditText)layout.findViewById(R.id.add_buddy_dialog_editor);
final TextView txt = (TextView)layout.findViewById(R.id.add_buddy_dialog_title);
txt.setText(((TextView)v.findViewById(R.id.add_buddy_item_title)).getText().toString());
//edit.setInputType(info.getEditType());
//edit.setSingleLine(info.getSingleLine());
edit.setText(listValue.getText().toString());
builder = new AlertDialog.Builder(this);
builder.setView(layout);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
String value = edit.getText().toString();
//mAddBuddyAdapter.changeValueText(value);
//listValue.setText(value);
arg0.dismiss();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
arg0.dismiss();
}
}
);
alertDialog = builder.create();
alertDialog.show();
//super.onListItemClick(l, v, position, id);
}
이것때문에 몇일을 삽질하고 있네요... ㅠㅠㅠㅠㅠㅠ




convertView == null 인 경우에는 layout 만 inflate 하시고 조건문 밖에 TextView 객체를 생성해보세요.