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

리스트 뷰 아이템이 많을 때 중복 현상

0 추천

안녕하세요.

동적으로 edit text 리스트 뷰를 만들었는데 갯수가 많아지니까 갑자기 중복 현상이 일어납니다. 위쪽 뷰에서 editText에 값을 입력하고 스크롤을 내리면 아까 적었던 텍스트가 입력된 채로 밑에서 새로운 뷰가 나옵니다..

adapter에서 getView를 호출하면서 이미 만들어뒀던 뷰를 계속 재활용해서 일어나는 현상 같은데, 어떻게 해야 editText 리스트를 유지하면서 중복이 되지않게 인플레이트 할 수 있을까요?

@Override
public View getView(int i, View convertView, ViewGroup parent) {
    final int pos = i;
    final Context context = parent.getContext();
    View view = convertView;
    if (view == null)
    {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.word_add_listview_item,parent,false);
        ((EditText) view.findViewById(R.id.add_word_editText)).setPrivateImeOptions("defaultInputmode=english;");
        ((EditText) view.findViewById(R.id.add_meaning_editText)).setPrivateImeOptions("defaultInputmode=korean;");
        editList.add(view);
    }
    return view;
}
public void addEditText()
{
    AddWGListViewItem newItem = new AddWGListViewItem();
    listView.add(newItem);
}
public View getEditText(int index)
{
    return editList.get(index);
}
    private ArrayList<AddWGListViewItem> listView ;
    private ArrayList<View> editList = new ArrayList<>();
익명사용자 님이 2018년 8월 22일 질문

2개의 답변

0 추천
getView 에서 editText의 text 를 초기화 해보세요.
익명사용자 님이 2018년 8월 22일 답변
0 추천
많아서가 아니고 view holder 가 없어서 이니 view holder 를 검색한 뒤 적용하세요

아니면 애초에 view holder 가 필수인 recylerview 를 이용하세요
aucd29 (218,390 포인트) 님이 2018년 8월 22일 답변
...