ListView 안에 Spinner를 넣어 만들었습니다.
그리고 Spinner의 값을 변경 시켜주고 1개 Item만큼 살짝 내렸다가 다시 올려보면 값이 초기화 되어있습니다.
(하지만 2개 이상 Item 만큼 내려 화면에 안보이게하였다가 다시 올리면 값이 제대로 보입니다.)
값이 초기화 된건가 싶어서 getSelectedItem으로 값을 찍어보면 제대로 저장되어있음에도 화면에 보여지는 값은 변화되어있습니다.
그러니까.. 문제는 요약하자면 getSelectedItem으로 얻은 Spinner의 값과 화면에 나오는 값이 불일치 합니다.
혹시 구현된 소스가 필요하시면 LisetView의 Adapter의 GetView는 아래와 같이 구현되어있고요, 혹시 이런 문제 있으셨던 분이나 비슷한 문제 해결을 아시는분 조언 부탁드립니다.
public View getView(int position, View convertView, ViewGroup parent) {
final int pos = position;
if(convertView == null)
{
convertView = Inflater.inflate(layout, parent, false);
struct = new authListStruct();
struct.setTextValue( (TextView)convertView.findViewById(R.id.textValue) );
struct.setSpinnerValue( (Spinner)convertView.findViewById(R.id.spinnerValue) );
convertView.setTag(struct);
}
else
{
struct = (authListStruct)convertView.getTag();
}
struct.getTextValue ().setText( Integer.toString( arSrc.get(pos).getTextValue() ) );
struct.getSpinnerValue ().setAdapter( arSrc.get(pos).getSpinnerValueAdapter() );
struct.getSpinnerValue ().setSelection( arSrc.get(pos).getSpinnerValue() );
struct.getSpinnerValue ().setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3)
{
if( arSrc.size() > 0 )
arSrc.get(pos).setSpinnerValue( arg2 );
}
public void onNothingSelected(AdapterView<?> arg0)
{
}
});
return convertView;
}




자답
struct.getSpinnerValue ().setSelection( arSrc.get(pos).getSpinnerValue() );를
struct.getSpinnerValue ().setSelection( arSrc.get(pos).getSpinnerValue(), true ); 로 수정하니 제대로 Loading됨.
setSelection 두 함수의 차이가 뭔지 좀더 알아보기.