我已经建立了一个聊天应用程序。
在我的聊天消息活动中,我有一个显示所有文本消息的 ListView。
在每条短信中,我都有一个 TextView,默认情况下会写入"Sending..."
,我希望在发送消息后对其进行更新。
在每个 ChatMessage 对象中,我都有一个sent
andtime
属性。如果发送为真,我将在 TextView 中显示时间,如果为假,我将按"Sending"
上述方式编写。
当我发送一条新消息时,我正在向 ListView 适配器添加一个新视图,并且由于某种原因它显示该消息已发送,尽管它没有......无法真正理解为什么。
这是我的 ArrayAdapter 的 getView() 和持有者类:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ChatMessage chatMessage = chatMessagesArrayList.get(position);
ChatMessageHolder chatMessageHolder = null;
if (row == null)
{
if (chatMessage.getSenderId() == app.getFacebookCurrentUser().getId())
row = LayoutInflater.from(context).inflate(layoutResourceId, null);
else
row = LayoutInflater.from(context).inflate(R.layout.chat_green, null);
chatMessageHolder = new ChatMessageHolder();
chatMessageHolder.message = (TextView) row.findViewById(R.activity_chat.message);
chatMessageHolder.sentTime = (TextView) row.findViewById(R.activity_chat.sent_time);
chatMessageHolder.isSent = chatMessage.isSent();
row.setTag(chatMessageHolder);
}
else
{
chatMessageHolder = (ChatMessageHolder) row.getTag();
}
chatMessageHolder.message.setText(chatMessage.getMessage());
if (chatMessageHolder.isSent)
chatMessageHolder.sentTime.setText(app.getDateTime(chatMessage.getTime()));
return row;
}
private static class ChatMessageHolder
{
TextView message, sentTime;
boolean isSent = false;
}
我真的不明白为什么它不根据 isSent 布尔标志写时间或“正在发送......”......