@Override public void bindView(View view, final Context context, Cursor cursor) { ViewHolder viewHolder = (ViewHolder) view.getTag(); MessageCache messageCache = DatabaseManager.getMessageCacheFromCursor(cursor); boolean ownMessage = isOwnMessage(messageCache.getSenderId()); boolean friendsRequestMessage = FriendsNotificationType.REQUEST.equals(messageCache.getFriendsNotificationType()); boolean friendsInfoRequestMessage = messageCache.getFriendsNotificationType() != null && !friendsRequestMessage; if (friendsRequestMessage) { viewHolder.messageTextView.setText(messageCache.getMessage()); viewHolder.timeTextMessageTextView.setText( DateUtils.longToMessageDate(messageCache.getTime())); setVisibilityFriendsActions(viewHolder, View.GONE); } else if (friendsInfoRequestMessage) { viewHolder.messageTextView.setText(messageCache.getMessage()); viewHolder.timeTextMessageTextView.setText( DateUtils.longToMessageDate(messageCache.getTime())); setVisibilityFriendsActions(viewHolder, View.GONE); lastInfoRequestPosition = cursor.getPosition(); } else if (!TextUtils.isEmpty(messageCache.getAttachUrl())) { resetUI(viewHolder); setViewVisibility(viewHolder.progressRelativeLayout, View.VISIBLE); viewHolder.timeAttachMessageTextView.setText( DateUtils.longToMessageDate(messageCache.getTime())); displayAttachImage(messageCache.getAttachUrl(), viewHolder); } else { resetUI(viewHolder); setViewVisibility(viewHolder.textMessageView, View.VISIBLE); viewHolder.messageTextView.setText(messageCache.getMessage()); viewHolder.timeTextMessageTextView.setText( DateUtils.longToMessageDate(messageCache.getTime())); } if (ownMessage && !friendsRequestMessage && !friendsInfoRequestMessage) { setMessageStatus( view, viewHolder, R.id.text_message_delivery_status_imageview, messageCache.isDelivered(), messageCache.isRead()); } if (!messageCache.isRead() && !ownMessage) { messageCache.setRead(true); QBUpdateStatusMessageCommand.start(context, dialog, messageCache, true); } // check if last message is request message boolean lastRequestMessage = cursor.getPosition() == cursor.getCount() - 1 && friendsRequestMessage; if (lastRequestMessage) { findLastFriendsRequestForCursor(cursor); } // check if friend was rejected/deleted. if (lastRequestPosition != EMPTY_POSITION && lastRequestPosition < lastInfoRequestPosition) { lastRequestPosition = EMPTY_POSITION; } else if ((lastRequestPosition != EMPTY_POSITION && lastRequestPosition == cursor.getPosition())) { // set visible friends actions setVisibilityFriendsActions(viewHolder, View.VISIBLE); initListeners(viewHolder, messageCache.getSenderId()); } }