实现的效果如图:
RecentActivity:
public class RecentActivity extends Activity{
ListView listView;
List<RecentEntity> chatEntityList=new ArrayList<RecentEntity>();
String[] mes;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_recent);
//注册广播
IntentFilter myIntentFilter = new IntentFilter();
myIntentFilter.addAction("org.yhn.yq.mes");
registerReceiver(new MyBroadcastReceiver(), myIntentFilter);
listView = (ListView) findViewById(R.id.lv_recent);
listView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
//打开聊天页面
Intent intent=new Intent(RecentActivity.this,ChatActivity.class);
intent.putExtra("account", Integer.parseInt(mes[0]));
intent.putExtra("nick", "");
startActivity(intent);
}
});
}
//广播接收器
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
mes = intent.getStringArrayExtra("message");
Toast.makeText(context, "收到["+Integer.parseInt(mes[0])+"]的消息:"+mes[1], Toast.LENGTH_SHORT).show();
//更新最近会话列表, 检测chatEntityList,防止同一个好友的消息出现多个会话实体
Iterator it=chatEntityList.iterator();
if(chatEntityList!=null && chatEntityList.size()!=0){
while(it.hasNext()){
RecentEntity re=(RecentEntity) it.next();
if(re.getAccount()==Integer.parseInt(mes[0])){
chatEntityList.remove(re);
}
}
}
chatEntityList.add(new RecentEntity(5, Integer.parseInt(mes[0]), mes[0]+"", mes[1],mes[2], false));
listView.setAdapter(new RecentAdapter(RecentActivity.this, chatEntityList));
unregisterReceiver(this);
}
}
}
RecentActivity中listview的Adapter:
public class RecentAdapter extends BaseAdapter{
private Context context;
private List<RecentEntity> list;
LayoutInflater inflater;
public RecentAdapter(Context context,List<RecentEntity> list){
this.context = context;
this.list = list;
inflater = LayoutInflater.from(context);
}
public View getView(int position, View convertView, ViewGroup root) {
convertView = inflater.inflate(R.layout.recent_listview_item, null);
ImageView avatar=(ImageView) convertView.findViewById(R.id.iv_avatar_r);
TextView nick=(TextView) convertView.findViewById(R.id.tv_nick_r);
TextView content=(TextView) convertView.findViewById(R.id.tv_chat_content_r);
ImageView isRead=(ImageView) convertView.findViewById(R.id.iv_tip_mes_r);
TextView time=(TextView) convertView.findViewById(R.id.tv_time_r);
RecentEntity re=list.get(position);
nick.setText(re.getNick());
content.setText(re.getContent());
isRead.setImageResource(R.drawable.tips_message);
time.setText(re.getTime());
return convertView;
}
public int getCount() {
return list.size();
}
public Object getItem(int position) {
return list.get(position);
}
public long getItemId(int position) {
return position;
}
}
消息实体类,就不贴代码了,很简单,你懂的
--------------------------------------------------分割线----------------------------------------------------------
完善了部分界面,以及一些细节,
后台运行,
增加了用户头像(简易方式,暂不能自定义头像),
用户个人信息
。。。
具体就不说了看图吧:
源码已经上传至我的资源,谢谢大家支持!欢迎一起学习交流!
转载请注明出处:http://blog.csdn.net/mimitracely