抱歉英语不好。伙计们,问题如下。是否可以动态更改标记的属性说明:2个用户之间存在对应关系,并且有1个用于计算消息本身。这是一个初始化和配置适配器的方法:
mFBAdapter = new FirebaseRecyclerAdapter<ChatMessage, FirechatMsgViewHolder>(
ChatMessage.class,
// chat_message - my msg layout
R.layout.chat_message,
FirechatMsgViewHolder.class,
mDatabaseReference.child(romName)
) {
@Override
protected void populateViewHolder(FirechatMsgViewHolder firechatMsgViewHolder, ChatMessage chatMessage, int i) {
mProgressBar.setVisibility(ProgressBar.INVISIBLE);
firechatMsgViewHolder.msgText.setText(chatMessage.getText()) firechatMsgViewHolder.userText.setText(chatMessage.getName());
if (mFirebaseUser.getPhotoUrl() == null) {
firechatMsgViewHolder.userImage.setImageDrawable(
ContextCompat.getDrawable(context, R.drawable.ic_account_circle_black_36dp));
} else {
mUsername = mFirebaseUser.getDisplayName();
mPhotoUrl = mFirebaseUser.getPhotoUrl().toString();
Glide.with(ChatFragment.this).
load(chatMessage.getPhotoUrl()).into(firechatMsgViewHolder.userImage);
}
}
};
mFBAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@Override
public void onItemRangeInserted(int positionStart, int itemCount) {
super.onItemRangeInserted(positionStart, itemCount);
int chatMsgCount = mFBAdapter.getItemCount();
int lastVisiblePosition = mLayoutManager.findLastCompletelyVisibleItemPosition();
if (lastVisiblePosition == -1 ||
(positionStart >= (chatMsgCount - 1) && lastVisiblePosition == (positionStart - 1))) {
mMsgRecyclerView.scrollToPosition(positionStart);
}
}
});
mMsgRecyclerView.setLayoutManager(mLayoutManager);
mMsgRecyclerView.setAdapter(mFBAdapter);
mUsername = mFirebaseUser.getDisplayName().toString();
有两个参与者的名字,我想做一些事情来帮助他们这样做,用户发送的信息出现在他的右边,并采用 - 在左边。有常量和Gravity.LEFT Gravity.RIGHT,您可以使用它来控制代码的位置,但它是用螺栓固定的。这是一种变体类型:
if(mFirebaseAuth.getCurrentUser().getDisplayName().equals(mUsername)){
// gravity right...
} else {
// gravity lef.....
}
但它不起作用。有一些想法,有人能遇到吗?