안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요
ListVIew 의 아이템을 EditText 로 채워서 EditText 로만으로 이루어져 있는 ListView 를 만들고자 했습니다.
그리고 각 아이템에 있는 Text 가 (키입력에 의하여)변경되는 시점에 작업을 하기 위하셔 TextWatcher 로 사용하고 싶었구요.
그래서 혼자 꿍꿍대서 짜본코드가 다음과 같습니다.
필요한 도구는 Data 를 위한 Array, ListView, Listadapter, textwatcher 정도라고 생각되었습니다.
그중 별 의미없는 다른 부분은 생략하고 주요 코드가 들어 있는 adapter 의 getview 부분입니다.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int sfposition = position;
boolean binit = false;
Log.i(mncls, "getView position = " + position);
if(convertView == null)
{
convertView = mInflater.inflate(mlayout, parent, false);
binit = true;
Log.i(mncls, "convertView was newly created : " + convertView.toString() );
}
EditText et = (EditText)convertView.findViewById(R.id.objectviewitem_textedit);
if(binit == true)
{
et.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
/*Log.d(FLAG, "===== AFTER afterTextChanged");*/
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//Log.d(FLAG, "===== BEFORE start = " + start + " count = " + count + " after = " + after);
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Func_object obj;
obj = marData.get(sfposition);
Log.i(mncls, "onTextChanged start = " + start + " before = " + before +
" count = " + count + " index = " + sfposition +
" state = " + obj.getObjectstate() +
" text = " + s.toString());
if(obj.getObjectstate() == Func_object.OPEN && start != 0)
{
obj.setObjectstate(Func_object.EDIT);
Log.d(mncls, "onTextChanged index : " + sfposition + " was modified");
}
else if(obj.getObjectstate() == Func_object.EMPTY && count > 0)
{
obj.setObjectstate(Func_object.NEW);
Log.i(mncls, "onTextChanged this is new text object");
}
obj.setPcdata(s.toString());
}
});
}
et.setText(marData.get(position).getPcdata());
return convertView;
}일단 실행은 잘되었습니다.
그런데 이상하게 동작하네요
초기에 입력한 데이터가
1. aaaa
2. bbbb
3. cccc
4. dddd
5. eeee
라고 한다면, 리스트의 아무 항목이든 클릭만 하면
1. aaaa
2. bbbb
3. cccc
4. bbbb
5. aaaa
로 바껴버리네요
간절히 조언을 기다려 봅니다.~!!




제가 의도하는 목적에 맞는 방법이 무엇일지... ㅡㅡ;;