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

리스트뷰 스크롤시 아이템 뒤죽박죽..

0 추천
안녕하세요 : )

현재 채팅 UI를 만들고 있습니다.

거의 다 완성했는데 채팅 내용을 스크롤시 채팅 내용들이 뒤죽박죽이 되고, 몇개는 사라지고 하네요;;

이게 찾아보니 getView를 재활용해서 그런거라던데 어떻게 해결해야될지 모르겠네요;

재활용 안하면 스크롤시 느리지 않나요?

현재 재 커스텀 어답터 일부 코드고,

http://theeye.pe.kr/archives/1253 여기 참고했습니다.
@Override
public View getView(int position, View convertView, ViewGroup parent){

    post_content_viewholder viewHolder;
    chat_data listviewitem=data.get(position);

    if(convertView==null){
        convertView=inflater.inflate(R.layout.chat_list,null);

        viewHolder = new post_content_viewholder();
       // viewHolder.name = (TextView)convertView.findViewById(R.id.name);
        viewHolder.content=(TextView)convertView.findViewById(R.id.content);
      //  viewHolder.name_two = (TextView)convertView.findViewById(R.id.name_two);
        viewHolder.content_two=(TextView)convertView.findViewById(R.id.content_two);

        convertView.setTag(viewHolder);

    }
    else
    {
        viewHolder = (post_content_viewholder) convertView.getTag();
    }

    pref= context.getSharedPreferences("data", 0); // 현재 자신이 누구인지 받아오기
    String check_who = pref.getString("check_id", "null"); // 현재 자신이 누구인지 받아오기
    if(check_who.equals("운영자")){  // 본인이 운영자이면
        //  viewHolder.content_two.setBackgroundResource(R.drawable.chat_one);
        if(listviewitem.getName().equals("운영자")) { //채팅 보낸 사람이 운영자일떄
            viewHolder.content_two.setText(listviewitem.getContent()); //오른쪽 레이아웃에
        } else {
            viewHolder.content.setText(listviewitem.getContent()); //왼쪽 레이아웃에
        }
        //   viewHolder.content.setVisibility(View.GONE);
    } else {  // 본인이 일반 사용자일때
        // viewHolder.name.setText(listviewitem.getName());
        //  viewHolder.content.setBackgroundResource(R.drawable.chat_two);
        if(listviewitem.getName().equals("운영자")) { //채팅 보낸 사람이 운영자일떄
            viewHolder.content.setText(listviewitem.getContent()); //왼쪽 레이아웃에
        } else {
            viewHolder.content_two.setText(listviewitem.getContent()); //오른쪽 레이아웃에
        }
        //  viewHolder.content_two.setVisibility(View.GONE);
    }

 

    return convertView;
}

중요한건  if(listviewitem.getName().equals("운영자")) {  이부분인데
운영자하고 사용자하고 1:1 채팅이라 운영자와 사용자 채팅내용을 왼쪽과 오른쪽에 나눠서 배치할 생각입니다(카톡처럼)
그걸 해주는게 저 부분이고요.
근데 저부분을 없애고 그냥 오른쪽에 채팅내용을 다 뜨게 하니 스크롤을해도 정상적으로 뜨더라고요..;
저부분을 넣으면 뒤죽박죽이 되고요 ㅠㅠ
저걸 넣음과 동시에 이 문제를 해결하는 방법은 없는건가요?
익명사용자 님이 2016년 6월 18일 질문

1개의 답변

0 추천
위젯에 내용을 추가하기전 코드에 먼저 위젯들의 값을 없애보세요.

뷰를 재활용한 코드 그 다음에 바로 위젯을 초기화한다고 생각하시고 위젯들에 빈값을 넣어주는 코드를 한번 사용해보세요.
캬옹이 (37,920 포인트) 님이 2016년 6월 20일 답변
...