【发布时间】:2019-01-07 23:53:27
【问题描述】:
Android 聊天应用。我在客户端上使用了一个临时 ArrayList 以确保显示聊天气泡按预期工作。我在哪里以及如何确定消息是发送还是接收?
ChatConversationFragment:
messageArrayList.add(new ChatConversationMessage("Hello"));
messageArrayList.add(new ChatConversationMessage("Yeah"));
messageArrayList.add(new ChatConversationMessage("Yeah", R.drawable.redhead_1));
//this last one is received because it has two inputs
ChatConversationMesssage:
/**
* The reason we have TWO of these methods with the same name is because sent
* messages don't have an image. We need to have a separate method for that.
**/
public ChatConversationMessage(String sentTextMessage) {
mSentTextMessage = sentTextMessage;
}
public ChatConversationMessage(String receivedTextMessage, int imageResourceId) {
mReceivedTextMessage = receivedTextMessage;
mImageResourceId = imageResourceId;
}
ConversationMessageAdapter:
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItemView = convertView;
Holder holder;
ChatConversationMessage currentMessage = getItem(position);
if(listItemView == null) {
holder = new Holder();
if(currentMessage){
listItemView = LayoutInflater.from(getContext()).inflate(
R.layout.chat_conversation_txt_sent, parent, false);
}
}
TextView sentText = listItemView.findViewById(R.id.textview_chat_message_sent);
sentText.setText(currentMessage.getSentTextMessage());
TextView receivedText = listItemView.findViewById(R.id.textview_chat_message_received);
receivedText.setText(currentMessage.getReceivedTextMessage());
return listItemView;
}
所以我试图将它放在最后一个类(适配器)的 if 语句中。但我不知道要制作什么方法以及将它放在哪里,所以我可以返回一个布尔值或其他东西,让它根据消息是发送还是接收显示不同的聊天气泡。
【问题讨论】:
-
将作者字段添加到 ChatConversationMessage,检查适配器 if (author == me) show X else show Y
标签: android class if-statement methods chat