2017-12-07 17 views
0

firebase 채팅을 만들었습니다. 메시지를 표시하려면 RecyclerViewCardViews이 사용됩니다. RecyclerView.AdapterOnBindViewHolder 메서드 내에서 CardView 중력을 변경하려고하므로 보낸 사람 메시지는 한쪽에 있고 다른 쪽은 다른 쪽 (WhatsApp)에있게됩니다. 여기이 처음 enter image description hereRecyclerView가 동기화되지 않습니다.

에 대한 메시지를로드 할 때 잘 작동하지만 난 그래도 스크롤하거나 새 메시지를 보낼으로 동기화 간다

public void onBindViewHolder(ViewHolder holder, int position) { 

     final MessageItem messageItem = messageItems.get(position); 
     holder.name.setText(messageItem.getSenderName()); 
     holder.message.setText(messageItem.getMessage()); 

     if(messageItem.getFrom() == new UserLocalStore(context).getUserDetails().getId()){ 
      holder.linearLayout.setGravity(Gravity.RIGHT); 
     } 

    } 

내 코드입니다 enter image description here

무엇 이럴 수 있니? 나는 onViewAttachedToWindowonViewRecycled 메쏘드 안에서 중력을 업데이트하려고 시도했다.

+2

당신은 당신의 onBind의 다른 절을 필요로 스크롤 할 때보기를 재활용하기 때문에 다른 사람의 왼쪽 중력을 설정해야이 코드를 변경 ...을 설정합니다 보기가 재활용되기 때문에 왼쪽에서부터 왼쪽으로. – Naveed

+0

고마워요, 작동했습니다 – MLPJ

답변

1

시도가

if(messageItem.getFrom() == new UserLocalStore(context).getUserDetails().getId()){ 
    holder.linearLayout.setGravity(Gravity.RIGHT); 
}else{ 
    holder.linearLayout.setGravity(Gravity.LEFT); 
} 

당신은 recyclerview 당신이

+0

감사합니다 Munir, 당신은 생명 구원자입니다 ... – MLPJ