안녕하세요 : )
현재 채팅 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 채팅이라 운영자와 사용자 채팅내용을 왼쪽과 오른쪽에 나눠서 배치할 생각입니다(카톡처럼)
그걸 해주는게 저 부분이고요.
근데 저부분을 없애고 그냥 오른쪽에 채팅내용을 다 뜨게 하니 스크롤을해도 정상적으로 뜨더라고요..;
저부분을 넣으면 뒤죽박죽이 되고요 ㅠㅠ
저걸 넣음과 동시에 이 문제를 해결하는 방법은 없는건가요?