@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
View v = convertView;
if(v==null)
{
v=getActivity().getLayoutInflater().inflate(R.layout.msg_listview, null);
}
else //null이 아닐 때 즉, 스크롤 할 때 ..
{
Log.d("v!=null","not null");
}
msg_edit = (EditText)v.findViewById(R.id.msg_edit);
msg_radio = (RadioButton)v.findViewById(R.id.msg_radio);
Log.d("재사용 후, 포지션 값 변화","position: "+position);
// editsPosition = (Integer)v.getTag();
msg_edit.addTextChangedListener(new TextWatcher()
{
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s)
{
//입력 후
Log.d("현재 editText 포지션은?",Integer.toString(position));
if(position==position)
{
String text = msg_edit.getText().toString();
if(!text.equals(""))
{
Log.d("입력한 text: ",text);
}
SharedPreferences.Editor editor = pref.edit();
editor.putInt("array_size", editArray.length);
for(int i=0;i<editArray.length; i++)
{
editor.putString("array_"+i, editArray[i]); //저장
}
editor.commit();
}//if
}
});
위와 같은 식으로, editText를 넣은 리스트뷰를 구성하였습니다.
현재 문제가, 스크롤 등으로 getview호출이 되고나면, editText의 포지션이 꼬이면서 입력한 값이
여러 번 보이는 중복 현상이 발생합니다.
현재 리스트는 총 50개인데, 한 페이지에 5개씩 보여줍니다.
즉, 재사용 문제로 0번 editText에 입력한 텍스트 값이, 6번 editText에도 출력이 됩니다..
getview convertView가 null이 아닐 때, 포지션 값을 잘 활용하라는데 당최 어떻게 해야 할지 모르겠습니다.
최종적으론 입력한 텍스트를 저장하고, 출력해서[setText] 보여주려고 하는데,
재사용이 되다보니 엄청나게 중복이 되네요.... 조언 좀 부탁드립니다....
+프래그먼트를 상속받는 클래스라 viewholder도 사용이 안됩니다..