您的位置:首页 > 其它

利用listview实现简要的QQ聊天效果

2016-04-21 15:42 162 查看
1 先放出消息实体类,注意包含头像,内容,和类别(是接受的消息,还是发送的消息)

/**
* 作者:水东流
* 时间:2016/4/21
*/
public class ChatBean {
private int type;
private String text;
private Bitmap icon;

public int getType() {
return type;
}

public void setType(int type) {
this.type = type;
}

public String getText() {
return text;
}

public void setText(String text) {
this.text = text;
}

public Bitmap getIcon() {
return icon;
}

public void setIcon(Bitmap icon) {
this.icon = icon;
}

}


然后就是adapter的自定义

/**
* 作者:水东流
* 时间:2016/4/21
* qq聊天
*/
public class MyAdapter extends BaseAdapter {

private List<ChatBean> mData;
private LayoutInflater mInflater;

public MyAdapter(List<ChatBean> mData, Context context) {
this.mData = mData;
mInflater = LayoutInflater.from(context);
}

@Override
public int getCount() {
return mData.size();
}

@Override
public Object getItem(int position) {
return mData.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

/*获取第position个item的类型*/
@Override
public int getItemViewType(int position) {
return mData.get(position).getType();
}

/*设定有几种item*/
@Override
public int getViewTypeCount() {
return 2;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
if (getItemViewType(position) == 0) {
viewHolder = new ViewHolder();
convertView = mInflater.inflate(R.layout.chat_item_in, null);
viewHolder.icon = (ImageView) convertView.findViewById(R.id.icon_in);
viewHolder.text = (TextView) convertView.findViewById(R.id.text_in);
} else {
viewHolder = new ViewHolder();
convertView = mInflater.inflate(R.layout.chat_item_out, null);
viewHolder.icon = (ImageView) convertView.findViewById(R.id.icon_out);
viewHolder.text = (TextView) convertView.findViewById(R.id.text_out);

}
convertView.setTag(viewHolder);

} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.icon.setImageBitmap(mData.get(position).getIcon());
viewHolder.text.setText(mData.get(position).getText());
return convertView;
}

public final class ViewHolder {
public ImageView icon;
public TextView text;
}
}

3 xml item布局文件

chat_item_out.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:gravity="center_vertical|right"
android:padding="10dp"
android:orientation="horizontal"
android:layout_height="match_parent">
<TextView
android:id="@+id/text_out"
android:layout_width="wrap_content"
android:text="土豆什么事"
android:gravity="center"
android:textSize="20sp"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/icon_out"
android:src="@mipmap/ic_launcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</LinearLayout>

chat_item_in

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:gravity="center_vertical"
android:padding="10dp"
android:orientation="horizontal"
android:layout_height="match_parent">
<ImageView
android:id="@+id/icon_in"
android:src="@mipmap/ic_launcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/text_in"
android:layout_width="wrap_content"
android:text="丽丽你好啊"
android:gravity="center"
android:textSize="20sp"
android:layout_height="wrap_content" />
</LinearLayout>


4调用界面

public class QQActivity extends AppCompatActivity {
ListView listView;
List<ChatBean> list;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qq);
listView = (ListView) findViewById(R.id.listview);
init();

}

private void init() {
list = new ArrayList<>();
ChatBean cb1 = new ChatBean();
cb1.setIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
cb1.setText("丽丽我喜欢你");
cb1.setType(0);
ChatBean cb2 = new ChatBean();
cb2.setIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
cb2.setText("土豆泥好烦啊");
cb2.setType(1);
ChatBean cb3 = new ChatBean();
cb3.setIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
cb3.setText("丽丽我真的喜欢你");
cb3.setType(0);
ChatBean cb4 = new ChatBean();
cb4.setIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
cb4.setText("那好吧,你想干什么");
cb4.setType(1);
ChatBean cb5 = new ChatBean();
cb5.setIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
cb5.setText("我想和你去看日出");
cb5.setType(0);
ChatBean cb6 = new ChatBean();
cb6.setIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
cb6.setText("好不好");
cb6.setType(0);
for(int i=0;i<1000;i++){
list.add(cb1);
list.add(cb2);
list.add(cb3);
list.add(cb4);
list.add(cb5);
list.add(cb6);
list.add(cb1);
list.add(cb2);
list.add(cb3);
list.add(cb4);
list.add(cb5);
list.add(cb6);
}
listView.setAdapter(new MyAdapter(list, this));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: