Android学习笔记-简单聊天界面的实现

敢说敢作敢为, 无怨无恨无悔。这篇文章主要讲述Android学习笔记-简单聊天界面的实现相关的知识,希望能为你提供帮助。
 
之前写过一次,但是莫名其妙的找不到了,今天重新发一次
先来写一个Bean文件,用来存储聊天记录
JavaBean.java

1 package com.example.androidliaotian; 2 3 public class javaBean { 4private String neirong; 5private String time; 6public String getNeirong() { 7return neirong; 8} 9public void setNeirong(String neirong) { 10this.neirong = neirong; 11} 12public String getTime() { 13return time; 14} 15public void setTime(String time) { 16this.time = time; 17} 18@Override 19public String toString() { 20return "JavaBean [neirong=" + neirong + ", time=" + time + "]"; 21} 22 23 24 }

MainActivity.java
1 package com.example.androidliaotian; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 7 8 import android.app.Activity; 9 import android.os.Bundle; 10 import android.util.Log; 11 import android.view.Menu; 12 import android.view.MenuItem; 13 import android.view.View; 14 import android.view.View.OnClickListener; 15 import android.widget.Button; 16 import android.widget.EditText; 17 import android.widget.ListView; 18 19 public class MainActivity extends Activity { 20private ListView listview; //列表 21private EditText neirong; //内容 22private Button fasong; //按钮 23private List< JavaBean> list = new ArrayList< JavaBean> (); //填充数据的list集合 24private MainAdapten adapten; //构建数据源 25@Override 26protected void onCreate(Bundle savedInstanceState) { 27setContentView(R.layout.activity_main); 28super.onCreate(savedInstanceState); 29 30listview = (ListView) findViewById(R.id.wo); 31//构建adapten数据源 32adapten = new MainAdapten(list, this); 33listview.setAdapter(adapten); 34neirong = (EditText) findViewById(R.id.neirong); 35fasong = (Button) findViewById(R.id.fasong); 36 37fasong.setOnClickListener(new OnClickListener() { 38 39@Override 40public void onClick(View v) { 41//String text = ; 42//实例化Bean文件 43JavaBean javaBean = new JavaBean(); 44//取当前文本内容并利用set方法赋值 45javaBean.setNeirong(neirong.getText().toString()); 46javaBean.setTime(System.currentTimeMillis()+""); 47list.add(javaBean); 48//更新数据源 49adapten.setList(list); 50adapten.notifyDataSetChanged(); 51//列表显示最后一条数据 52listview.setSelection(list.size()-1); 53//发送完毕之后要让输入框清空 54neirong.setText(""); 55} 56}); 57 58 59 60} 61 62 }

Adapter的代码
1 package com.example.androidliaotian; 2 3 import java.util.List; 4 5 6 7 import android.content.Context; 8 import android.view.LayoutInflater; 9 import android.view.View; 10 import android.view.ViewGroup; 11 import android.widget.BaseAdapter; 12 import android.widget.ImageView; 13 import android.widget.TextView; 14 15 public class MainAdapten extends BaseAdapter{ 16private List< JavaBean> list; 17private Context context; 18 19public MainAdapten(List< JavaBean> list,Context context){ 20this.context = context; 21this.list = list; 22} 23 24public void setList(List< JavaBean> list) { 25this.list = list; 26notifyDataSetChanged(); 27} 28 29@Override 30public int getCount() { 31return list.size(); 32} 33 34@Override 35public Object getItem(int position) { 36return list.get(position); 37} 38 39@Override 40public long getItemId(int position) { 41return position; 42} 43 44@Override 45public View getView(int position, View convertView, ViewGroup parent) { 46 47final Hui hui; 48if(convertView == null){ 49hui = new Hui(); 50convertView = LayoutInflater.from(context).inflate(R.layout.item_chatqipao, null); 51hui.chatneirong = (TextView) convertView.findViewById(R.id.tv_chatneirong); 52hui.chattime = (TextView) convertView.findViewById(R.id.tv_chattime); 53hui.tou = (ImageView) convertView.findViewById(R.id.iv_chattou); 54 55convertView.setTag(hui); 56}else{ 57hui = (Hui) convertView.getTag(); 58} 59JavaBean javaBean= list.get(position); 60hui.chatneirong.setText("我是"+javaBean.getNeirong()); 61hui.chattime.setText(javaBean.getTime()); 62//javaBean.setTime(javaBean.getTime()); 63 64return convertView; 65} 66 67class Hui{ 68ImageView tou,tupian; 69TextView chattime,chatneirong; 70} 71 }

下面是布局界面
activity_main.xml
1 < RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2xmlns:tools="http://schemas.android.com/tools" 3android:layout_width="match_parent" 4android:layout_height="match_parent" 5tools:context="${relativePackage}.${activityClass}" > 6< !-- 用来显示消息的列表 --> 7< ListView android:id="@+id/wo" android:layout_width="match_parent" 8android:layout_height="wrap_content" 9android:layout_above="@+id/neirong"> < /ListView> 10< !-- 用来输入文本的 --> 11< EditText android:id="@+id/neirong" android:layout_width="match_parent" 12android:layout_height="wrap_content" android:layout_alignParentBottom="true" 13android:layout_toLeftOf="@+id/fasong" android:text="少时诵诗书" /> 14< !-- 用于发送的按钮 --> 15< Button android:id="@+id/fasong" android:layout_width="wrap_content" 16android:layout_height="wrap_content"android:text="发送" 17android:layout_alignParentBottom="true" 18android:layout_alignParentRight="true"/> 19 20 < /RelativeLayout>

Adapter布局文件  item_chatqipao.xml
1 < ?xml version="1.0" encoding="utf-8"?> 2 < RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3android:layout_width="match_parent" 4android:layout_height="match_parent" 5android:orientation="vertical" > 6 7< !-- 发送时间 --> 8< TextView android:id="@+id/tv_chattime" android:layout_width="wrap_content" 9android:layout_height="wrap_content" android:layout_alignParentTop="true" 10android:layout_centerHorizontal="true" android:layout_marginTop="14dp" 11android:padding="3dp" 12android:text="2016年9月13日10:55:58" android:textColor="#FFFFFF" 13android:textSize="12sp" /> 14 15< !-- 文字内容 --> 16< TextView android:id="@+id/tv_chatneirong" android:layout_width="wrap_content" 17android:layout_height="wrap_content" android:layout_alignTop="@+id/iv_chattou" 18android:layout_toLeftOf="@+id/iv_chattou" android:background="@drawable/skin_aio_user_bubble_nor" 19android:gravity="center" android:padding="10dp" 20android:text="qw速度速度多少e" android:layout_marginTop="10dp" 21android:textSize="16sp"android:maxLines="10" 22android:maxEms="10" 23/> 24 25< !-- 头像 --> 26< ImageView android:id="@+id/iv_chattou" android:layout_width="40dp" 27android:layout_height="40dp" android:layout_alignParentRight="true" 28android:layout_below="@+id/tv_chattime" android:layout_marginRight="14dp" 29android:src="https://www.songbingjia.com/android/@drawable/ic_launcher" /> 30 31 32 33 < /RelativeLayout>

 
运行效果
Android学习笔记-简单聊天界面的实现

文章图片

 
【Android学习笔记-简单聊天界面的实现】附上代码下载地址:链接: http://pan.baidu.com/s/1hrRGOlQ 密码: 32cy

    推荐阅读