Android 当其他用户发送消息时,更改可绘制的
我正在尝试创建一个带有气泡的聊天,我从一个Json文件中获取消息 现在,我试图在特定用户讲话时改变气泡的颜色 我使用Java从Json文件中获取消息和发送消息的用户的Id 我创建了一个“会话”来获取登录用户的Id,并将此Id与消息发送者的Id进行比较,以检查我将使用的Id 为此,我创建了一个名为position的字符串。如果登录用户的ID与打开的会话的ID相等,则气泡会改变颜色并向右移动 我创建了一个适配器来接收消息并将气泡插入其中。我正在检查哪个用户发送了消息,调用position变量 我的问题是,所有的气泡都在改变,但只有一种颜色。我想改变特定信息的泡沫。当登录用户讲话时,它必须显示不同的气泡 我该怎么做 变量Android 当其他用户发送消息时,更改可绘制的,android,Android,我正在尝试创建一个带有气泡的聊天,我从一个Json文件中获取消息 现在,我试图在特定用户讲话时改变气泡的颜色 我使用Java从Json文件中获取消息和发送消息的用户的Id 我创建了一个“会话”来获取登录用户的Id,并将此Id与消息发送者的Id进行比较,以检查我将使用的Id 为此,我创建了一个名为position的字符串。如果登录用户的ID与打开的会话的ID相等,则气泡会改变颜色并向右移动 我创建了一个适配器来接收消息并将气泡插入其中。我正在检查哪个用户发送了消息,调用position变量 我的问
private static final String TAG_MESSAGE = "reply";
private static final String TAG_ID = "id";
获取数据
//Calling session from logged in user
NewSession app = (NewSession) getApplication();
String logid = app.getLogid();
...
JSONObject jsonObj = new JSONObject(jsonStr);
// Getting JSON Array node
contacts = jsonObj.getJSONArray(TAG_CONTACTS);
// looping through All Contacts
for (int i = 0; i < contacts.length(); i++) {
JSONObject c = contacts.getJSONObject(i);
String id = c.getString(TAG_ID);
String message = c.getString(TAG_MESSAGE);
String position = "";
if(username == logid){
position = "right";
}else{
position = "left";
}
HashMap<String, String> contact = new HashMap<String, String>();
// adding each child node to HashMap key => value
contact.put(TAG_ID, id);
contact.put(TAG_MESSAGE, message);
谢谢。不要将字符串与
s1==s2
你应该使用
s1.equals(s2)您在适配器中使用的是
==
(参考)比较,而不是字符串#equals()
比较
试试这个:
message.setBackgroundResource("left".equalsIgnoreCase(url) ? R.drawable.bubble_green : R.drawable.bubble_yellow);
不要将字符串与s1==s2进行比较,您应该使用s1.equals(s2)Yeaa,非常感谢,现在工作正常!非常感谢。
message.setBackgroundResource("left".equalsIgnoreCase(url) ? R.drawable.bubble_green : R.drawable.bubble_yellow);