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

커스텀리스트뷰 안에 아이템들 뒤죽박죽.. 에러

0 추천

안녕하세요 : )

 

채팅용으로 쓸 리스트뷰 + 커스텀어답터를 만들었는데 안에 아이템들이 뒤죽박죽이라 미치겠네요;

 

 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(layout, parent, false);
            viewHolder = new post_content_viewholder();
            viewHolder.content = (TextView) convertView.findViewById(R.id.content);
            viewHolder.chat_time = (TextView) convertView.findViewById(R.id.chat_time);
            viewHolder.rel= (RelativeLayout) convertView.findViewById(R.id.rel);
            viewHolder.rell= (RelativeLayout) convertView.findViewById(R.id.rell);
            viewHolder.chat_image= (ImageView) convertView.findViewById(R.id.chat_image);

            Log.d("아오", "아오");


            convertView.setTag(viewHolder);

 

        } else {
            viewHolder = (post_content_viewholder) convertView.getTag();
            Log.d("아오2","아오2");
        }
        pref = context.getSharedPreferences("data", 0);
        String chat_who = pref.getString("check_id", "null");
        if (listviewitem.getName().equals(chat_who)) {  // 채팅이 자기것이면
            RelativeLayout.LayoutParams layoutParams= new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            layoutParams.setMargins(500, 0, 0, 0); // 오른쪽에 배치
            viewHolder.rel.setLayoutParams(layoutParams);
            viewHolder.rell.setBackgroundResource(R.drawable.chat_one);


                viewHolder.content.setText(listviewitem.getContent());

            viewHolder.chat_image.setMaxHeight(50);
            viewHolder.chat_image.setMaxWidth(50);
            if(listviewitem.getLike().contains("JPG")){
                Glide.with(context).load(listviewitem.getLike())
                        .diskCacheStrategy(DiskCacheStrategy.ALL) // 원본이미지 캐싱
                        .into(viewHolder.chat_image);}

            SimpleDateFormat sdfNow = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 현재 시간
            now_time = sdfNow.format(new Date(System.currentTimeMillis()));
            if(listviewitem.getView().substring(0,9).equals(now_time.substring(0,9))){ // 불러온 채팅 작성시간이 오늘이면
                viewHolder.chat_time.setText(listviewitem.getView().substring(11, 16)); // 시간 : 분 만 표시
            } else {
                viewHolder.chat_time.setText(listviewitem.getView().substring(5,10));  // 월-일 만 표시

            }
            viewHolder.chat_time.setGravity(Gravity.END);


        } else {  // 채팅이 자기것이 아니면
            RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            layoutParams.setMargins(0, 0, 500, 0);  // 왼쪽에 배치
            viewHolder.rel.setLayoutParams(layoutParams);
            viewHolder.rell.setBackgroundResource(R.drawable.chat_two);

            viewHolder.content.setText(listviewitem.getContent());

            viewHolder.chat_image.setMaxHeight(50);
            viewHolder.chat_image.setMaxWidth(50);
            if(listviewitem.getLike().contains("JPG")){
                Glide.with(context).load(listviewitem.getLike())
                        .diskCacheStrategy(DiskCacheStrategy.ALL) // 원본이미지 캐싱
                        .into(viewHolder.chat_image);}

            SimpleDateFormat sdfNow = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 현재 시간
            now_time = sdfNow.format(new Date(System.currentTimeMillis()));
            if(listviewitem.getView().substring(0, 9).equals(now_time.substring(0,9))){ // 불러온 채팅 작성시간이 오늘이면
                viewHolder.chat_time.setText(listviewitem.getView().substring(11, 16)); // 시간 : 분 만 표시
            } else {
                viewHolder.chat_time.setText(listviewitem.getView().substring(5, 10));  // 월-일 만 표시
            }
            viewHolder.chat_time.setGravity(Gravity.START);
        }


        return convertView;
    }
}

 

코드는 이러한데 채팅용으로 쓸것이라 대화상자 안에 image or text 가 옵니다.

    viewHolder.chat_image.setMaxHeight(50);
            viewHolder.chat_image.setMaxWidth(50);
            if(listviewitem.getLike().contains("JPG")){
                Glide.with(context).load(listviewitem.getLike())
                        .diskCacheStrategy(DiskCacheStrategy.ALL) // 원본이미지 캐싱
                        .into(viewHolder.chat_image);}

 

이부분이 이상한데요; 이렇게 돌렸을때 아이템이 뒤죽박죽 섞이고요; (텍스트가 와야할 자리에 이미지가 오네요;)

 

  viewHolder.chat_image.setMaxHeight(50);
            viewHolder.chat_image.setMaxWidth(50);
          
                Glide.with(context).load(listviewitem.getLike())
                        .diskCacheStrategy(DiskCacheStrategy.ALL) // 원본이미지 캐싱
                        .into(viewHolder.chat_image);

 

이렇게 했을땐 처음엔 정상적으로 뜨는데 스크롤을 위로아래로 갔다오면 이미지에 들어갈 대화상자가 비정상적으로 커지네요;; (사진참조)

 

미치겠습니다; 왜이런건가요??

익명사용자 님이 2016년 6월 25일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...