我正在尝试使用Bubbles语音创建聊天,我从Json文件中获取消息。
现在我试图在特定用户谈话时改变泡泡的颜色。
我使用Java从我的Json文件中获取发送消息的用户的消息和Id。
我创建了一个" Session"从登录用户获取Id,我将此Id与来自邮件发件人的Id进行比较,以检查我将使用的希望泡泡。
为此,我创建了一个名为position的String。如果登录用户的ID等于打开的会话中的ID,则气泡会更改颜色,然后向右移动。
我创建了一个接收消息并在那里插入气泡的适配器。我正在检查哪个用户发送了消息,调用了位置变量。
我的问题是所有气泡都在改变,但只有一种颜色。我想改变特定消息的泡沫。当登录用户说话时,它必须显示不同的气泡。
我该怎么做?
变量
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);
适配器
public View getView(int position, View convertView, ViewGroup parent){
View v = super.getView(position, convertView, parent);
TextView message = (TextView) v.getTag();
if(message == null){
message = (TextView) v.findViewById(R.id.msg);
v.setTag(message);
}
String url = (String) ((Map)getItem(position)).get(TAG_POSITION);
message.setBackgroundResource(url == "left" ? R.drawable.bubble_green : R.drawable.bubble_yellow);
return v;
}
感谢。
答案 0 :(得分:0)
不要将Strings与之比较 s1 == s2 你应该使用 s1.equals(S2)
答案 1 :(得分:0)
您在适配器中使用==
(参考)比较代替String#equals()
比较。
试试这个:
message.setBackgroundResource("left".equalsIgnoreCase(url) ? R.drawable.bubble_green : R.drawable.bubble_yellow);