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

来源:互联网 发布:js隐藏span 编辑:程序博客网 时间:2024/05/21 19:34

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));    }}


0 0