Java 安卓泡泡聊天第一条用户信息后的不同布局
我正在聊天应用程序的listview适配器中创建“气泡”样式的消息表示。这就是我想要达到的效果:Java 安卓泡泡聊天第一条用户信息后的不同布局,java,android,android-layout,android-listview,chat,Java,Android,Android Layout,Android Listview,Chat,我正在聊天应用程序的listview适配器中创建“气泡”样式的消息表示。这就是我想要达到的效果: 如您所见,若用户在一行中写入两条或更多消息,则第二条用户消息应以不同的布局显示(无图片)。我怎样才能做到这一点?因为它看起来很复杂。我是否应该检查适配器中的最后一个消息类型(看起来不太可靠)?或者在我的邮件对象中添加并稍后检查附加字段?任何示例或帮助都将不胜感激。我假设您有这样一个Message类: class Message { public String text; publi
如您所见,若用户在一行中写入两条或更多消息,则第二条用户消息应以不同的布局显示(无图片)。我怎样才能做到这一点?因为它看起来很复杂。我是否应该检查适配器中的最后一个消息类型(看起来不太可靠)?或者在我的邮件对象中添加并稍后检查附加字段?任何示例或帮助都将不胜感激。我假设您有这样一个Message类:
class Message {
public String text;
public String avatar;
}
因此,在getView方法中,您可以轻松检查上一项:
ArrayList<Message> mMessages;
...
public View getView (int position, View convertView, ViewGroup parent){
if( convertView == null ){
if (position > 0 && mMessages.get(position-1).avatar.equal(mMessages.get(position).avatar)){
// set layout for second message style
convertView = inflater.inflate(R.layout.list_without_avatar, parent, false);
} else {
// set layout for the first message style
convertView = inflater.inflate(R.layout.list_with_avatar, parent, false);
}
}
...
return convertView;
}
ArrayList消息;
...
公共视图getView(int位置、视图转换视图、视图组父级){
if(convertView==null){
if(位置>0&&mMessages.get(位置-1).avatar.equal(mMessages.get(位置).avatar)){
//设置第二个消息样式的布局
convertView=充气机。充气(R.layout.list_,无化身,父项,false);
}否则{
//设置第一个消息样式的布局
convertView=充气机。充气(R.layout.list_,带化身,父,假);
}
}
...
返回视图;
}
希望能有帮助 使用不同的9个补丁。还有一个布尔值(比如说
isFirst
)。是的,将来我肯定会使用九个补丁。我知道这个解决方案可能基于简单的布尔/布尔。我只是从架构的角度感兴趣——在代码中使用布尔运算的确切位置。查看任何代码示例都很好。查看任何代码示例都很好。
对我们来说也是如此。为了能够帮助你。无论如何,通过胡乱猜测:在你展示图片的地方是一个将布尔值设置为真的好地方。在显示第一个TextView之后(您可能更喜欢设置一个整数计数器,而不是布尔值),将其设置为false.yup,u r right,但还有另一种类似于您的方法。检查上一项的用户id,如果相同,则隐藏图片,如果不显示图片:)