【发布时间】:2018-10-21 15:51:44
【问题描述】:
适配器
public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MessageViewHolder>{
private List<Messages> mMessagesList;
private FirebaseAuth mAuth;
public class MessageViewHolder extends RecyclerView.ViewHolder{
public TextView messageText;
public MessageViewHolder(View view)
{
super(view);
messageText = (TextView)view.findViewById(R.id.message_text_layout);
}
}
public MessageAdapter (List<Messages>mMessagesList)
{
this.mMessagesList = mMessagesList;
}
@Override
public MessageViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
View V = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_chat_custom,parent,false);
mAuth = FirebaseAuth.getInstance();
return new MessageViewHolder(V);
}
@Override
public void onBindViewHolder(MessageViewHolder holder, int position) {
String current_user_id = mAuth.getInstance().getCurrentUser().getUid();
Messages messages = mMessagesList.get(position);
String from_user = messages.getFrom();
if (from_user!=null && from_user.equals(current_user_id)){
holder.messageText.setBackgroundResource(R.drawable.text_background1);
holder.messageText.setTextColor(Color.BLACK);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) holder.messageText.getLayoutParams();
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
holder.messageText.setLayoutParams(params);
}else {
holder.messageText.setBackgroundResource(R.drawable.text_background2);
holder.messageText.setTextColor(Color.BLACK);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) holder.messageText.getLayoutParams();
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
holder.messageText.setLayoutParams(params);
}
holder.messageText.setText(messages.getMessage());
}
@Override
public int getItemCount() {
return mMessagesList.size();
}
public void setMessagesList(List<Messages> mMessagesList) {
this.mMessagesList = mMessagesList;
}
}
自定义布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/message_single_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="12dp">
<TextView
android:id="@+id/message_text_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:background="@drawable/messages_text_background"
android:padding="10dp"
android:text="Textview"
android:textSize="20dp"
android:textColor="@color/black"/>
</RelativeLayout>
请帮帮我...我尝试使用参数...但它仍然没有给我结果...我从来没有处理过这个问题,因为总是在 xml 中对齐它但现在我不能这样做是因为它必须根据条件对齐所以请帮助我......提前谢谢......
【问题讨论】:
-
这么简单的自定义布局,应该考虑换成FrameLayout,利用重力来对齐。检查这个答案:Align views left and right programmatically in android recycler view ~ DAA
标签: java android database alignment android-xml