您的位置:首页 > 其它

聊天界面

2016-07-24 13:36 351 查看
1.布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="#ffffffff"

    tools:context=".ChatActivity" >

    <RelativeLayout

        android:id="@+id/layout_actionbar"

        android:layout_width="match_parent"

        android:layout_height="45dp"

        android:layout_alignParentTop="true"

        android:background="@drawable/title_bar4" >

        

        <TextView

            android:id="@+id/textview_chatActionbar_mesCount"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_centerVertical="true"

            android:paddingLeft="25dp"

            android:text="标题"

            android:textColor="#ffffffff"

            android:textSize="14sp" />

        <ImageView

            android:id="@+id/imageview_chat_actionbar_left"

            android:layout_width="23dp"

            android:layout_height="23dp"

            android:layout_alignParentLeft="true"

            android:layout_centerVertical="true"

            android:src="@drawable/left" />

        <TextView

            android:id="@+id/textview_chatActionbar_title"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_centerInParent="true"

            android:text="标题"

            android:textColor="#ffffffff"

            android:textSize="18sp" />

        <ImageView

            android:id="@+id/imageview_chat_actionbar_right"

            android:layout_width="36dp"

            android:layout_height="36dp"

            android:layout_alignParentRight="true"

            android:layout_centerVertical="true"

            android:visibility="gone"

            android:src="@drawable/ic_launcher" />

    </RelativeLayout>

    <ListView

        android:id="@+id/listview_chat_context"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:layout_above="@+id/include_chat_bottom"

        android:layout_below="@+id/layout_actionbar" >

    </ListView>

    <include

        android:id="@+id/include_chat_bottom"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_alignParentBottom="true"

        layout="@layout/chat_bottom" />

</RelativeLayout>

界面



3.实现代码

1)创建一个adapter

public class ChatMessageListViewAdapter extends BaseAdapter{
private LayoutInflater inflate = null;
private List<ChatMessageActivity> allList = new ArrayList<ChatMessageActivity>();
private int id;
public ChatMessageListViewAdapter(Context context) {
super();
inflate = LayoutInflater.from(context);
}

public void addDatas(List<ChatMessageActivity> list){
if(list!=null){
allList.clear();
allList.addAll(list);
notifyDataSetChanged();
}
}

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

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

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = new ViewHolder();
ChatMessageActivity chatMessage = allList.get(position);
id = chatMessage.getId();
if(id == 1){
if(convertView == null){
convertView = inflate.inflate(R.layout.chat_left, null);
viewHolder.timing = (TextView) 
convertView.findViewById(R.id.textview_chat_left_date);
viewHolder.context = (TextView) 
convertView.findViewById(R.id.textview_chat_left_context);
viewHolder.logo = (ImageView) 
convertView.findViewById(R.id.imageview_chat_left_logo);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder)convertView.getTag();
}
viewHolder.timing.setText(chatMessage.getTime());
viewHolder.context.setText(chatMessage.getContext());
}else if(id == 2){
if(convertView == null){
convertView = inflate.inflate(R.layout.chat_left, null);
viewHolder.timing = (TextView) 
convertView.findViewById(R.id.textview_chat_right_date);
viewHolder.context = (TextView) 
convertView.findViewById(R.id.textview_chat_right_context);
viewHolder.logo = (ImageView) 
convertView.findViewById(R.id.imageview_chat_right_logo);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder)convertView.getTag();
}
viewHolder.timing.setText(chatMessage.getTime());
viewHolder.context.setText(chatMessage.getContext());
}
return convertView;
}
class ViewHolder{
TextView timing;
ImageView logo;
TextView context;
}

}

2)显示代码

public class ChatActivity extends Activity {
//ActionBar
private TextView title,msgCount;
//BottomBar
private ImageView add;
private EditText message;

private ListView listContext;
private LinearLayout chat_bottom;
private Button send;
private List<ChatMessageActivity> allMessage;
private ChatMessageListViewAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
initView();
setListener();
setOnClickMethod();
setListView();
}
private void initView() {
//初始化ActionBar
msgCount = (TextView) findViewById(R.id.textview_chatActionbar_mesCount);
title = (TextView) findViewById(R.id.textview_chatActionbar_title);
//初始化BottomBar
chat_bottom = (LinearLayout) findViewById(R.id.include_chat_bottom);
add = (ImageView) chat_bottom.findViewById(R.id.imageview_chatBottom_add);
message = (EditText) chat_bottom.findViewById(R.id.edittext_chatBottom_message);
message.setText("");
send = (Button) chat_bottom.findViewById(R.id.button_chatBottom_send);

allMessage = new ArrayList<ChatMessageActivity>();
listContext = (ListView) findViewById(R.id.listview_chat_context);

}
private void setListener() {
msgCount.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ChatActivity.this,MainActivity.class);
startActivity(intent);
finish();
}
});
}
private void setOnClickMethod() {
send.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String message_Str = message.getText().toString();
if(TextUtils.isEmpty(message_Str)){
return;
}
//格式化日期
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
long time = System.currentTimeMillis();
Date date = new Date(time);
String timeing = dateFormat.format(date);
//实体类(日期、内存、ID)
ChatMessageActivity chatMessage = new ChatMessageActivity();
chatMessage.setTime(timeing);
chatMessage.setContext(message_Str);
chatMessage.setId(1);
//将消息发出去
Message msg = new Message();
msg.obj = chatMessage;
msg.what = 1;
handler.sendMessage(msg);
//初始化
message.setText("");
}
});
}
private void setListView(){
adapter = new ChatMessageListViewAdapter(this);
listContext.setAdapter(adapter);
}
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
if(msg.what == 1){
ChatMessageActivity chatMessage = (ChatMessageActivity) msg.obj;
allMessage.add(chatMessage);
adapter.addDatas(allMessage);
listContext.setSelection(allMessage.size());
}
super.handleMessage(msg);
};
};

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: