FirebaseRecyclerAdapter动态布局

时间:2017-01-29 15:40:05

标签: android firebase firebase-realtime-database recycler-adapter firebaseui

抱歉英语不好。伙计们,问题如下。是否可以动态更改标记的属性说明: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.....
}

但它不起作用。有一些想法,有人能遇到吗?

0 个答案:

没有答案