一些IM聊天软件的展现形式是左右分开的形式。比如说,别人给你发的信息全部靠左显示,你自己发给别人的信息全部靠右显示。
而我们的ListView很多时候是显示同一个布局,其实BaseAdapter中有2个重要的方法在大多数情况下我们并未使用到,一个是public int getViewTypeCount(),显示ListView中有多少种布局(默认是显示是1),像微信那样聊天界面,是有2种布局方式;另外一个getItemViewType(),可以让不同item条目加载不同的布局,下面就简单的模拟下微信的聊天界面做法:
MainActivity.java
Person.java
package com.jackie.wechat;
public class Person {
private String name;
private int age;
private int type;
public String getName() {
return name;
}
public void setName(String name) {
this .name = name;
}
public int getAge() {
return age;
}
public void setAge( int age) {
this .age = age;
}
public int getType() {
return type;
}
public void setType( int type) {
this .type = type;
}
}
item_left.xml
<? xml version = "1.0" encoding = "utf-8" ?>
< RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:orientation = "vertical"
android:background = "#ffffff"
>
< RelativeLayout
android:layout_width = "fill_parent"
android:layout_height = "45dp"
>
< TextView
android:id = "@+id/tv_username"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:textSize = "16sp"
android:textColor = "#123456"
android:layout_centerVertical = "true"
android:layout_alignParentLeft = "true"
/>
< TextView
android:id = "@+id/tv_age"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:textSize = "16sp"
android:textColor = "#123456"
android:layout_centerVertical = "true"
android:layout_toRightOf = "@id/tv_username"
android:layout_marginLeft = "20dp"
/>
</ RelativeLayout >
</ RelativeLayout >
item_right.xml
<?xml version= "1.0" encoding= "utf-8" ?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#ffffff"
>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="45dp"
>
<TextView
android:id="@+id/tv_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="#123456"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
/>
<TextView
android:id="@+id/tv_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="#123456"
android:layout_centerVertical="true"
android:layout_toLeftOf="@id/tv_username"
android:layout_marginRight="20dp"
/>
</RelativeLayout>
</RelativeLayout>