安卓与java实现聊天系统_android中实现简单的聊天功能
这个例子只是简单的实现了单机版的聊天功能,自己跟自己聊,啦啦~~主要还是展示RecyclerView控件的使用吧~参考我之前写的文章:1、先添加一个关于聊天内容的Chat.java类:packagecom.example.chenrui.common;public classChat {privateString targetUser;privateString content;publicCha
这个例子只是简单的实现了单机版的聊天功能,自己跟自己聊,啦啦~~
主要还是展示RecyclerView控件的使用吧~
参考我之前写的文章:
1、先添加一个关于聊天内容的Chat.java类:
packagecom.example.chenrui.common;public classChat {privateString targetUser;privateString content;publicChat(String targetUser, String content) {this.targetUser =targetUser;this.content =content;
}publicString getTargetUser() {returntargetUser;
}public voidsetTargetUser(String targetUser) {this.targetUser =targetUser;
}publicString getContent() {returncontent;
}public voidsetContent(String content) {this.content =content;
}
}
Chat.java这个类有两个属性:聊天对象和聊天内容
2、添加一个RecyclerView控件子项chat_item.xml,这个是实现了聊天内容项的展示:
3、添加RecyclerView控件的适配器ChatAdapter.java类:
packagecom.example.chenrui.app1;importandroid.support.annotation.NonNull;importandroid.support.v7.widget.RecyclerView;importandroid.util.Log;importandroid.view.Gravity;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.LinearLayout;importandroid.widget.TextView;importcom.example.chenrui.common.Chat;importjava.util.List;public class ChatAdapter extends RecyclerView.Adapter{private ListchatList;public ChatAdapter(ListchatList) {this.chatList =chatList;
}
@NonNull
@Overridepublic ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, inti) {
View view= LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.chat_item,viewGroup,false);
ViewHolder viewHolder= newViewHolder(view);returnviewHolder;
}
@Overridepublic void onBindViewHolder(@NonNull ViewHolder viewHolder, inti) {
Chat chat=chatList.get(i);
viewHolder.chatText.setText(chat.getContent());
LinearLayout.LayoutParams params= newLinearLayout.LayoutParams(viewHolder.chatText.getLayoutParams());if(chat.getTargetUser().equals("张三")) {
params.gravity=Gravity.LEFT;
}else{
params.gravity=Gravity.RIGHT;
}
viewHolder.chatText.setLayoutParams(params);
}
@Overridepublic intgetItemCount() {returnchatList.size();
}static class ViewHolder extendsRecyclerView.ViewHolder {
TextView chatText;publicViewHolder(@NonNull View itemView) {super(itemView);
chatText=itemView.findViewById(R.id.chatText);
}
}
}
上面的代码,设置的是,如果聊天对象是张三,就把聊天内容显示在列表的左侧,否则就显示在列表的右侧。这个是模拟自己和别人对话的展示效果
4、最后就是主Activity了
activity_main.xml
MainActivity.java
packagecom.example.chenrui.app1;importandroid.os.Bundle;importandroid.support.v7.app.AppCompatActivity;importandroid.support.v7.widget.LinearLayoutManager;importandroid.support.v7.widget.RecyclerView;importandroid.view.View;importandroid.widget.ArrayAdapter;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.Spinner;importcom.example.chenrui.common.Chat;importjava.util.ArrayList;importjava.util.List;public class MainActivity extendsAppCompatActivity {
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);final RecyclerView chatList =findViewById(R.id.chatList);final List chatData = new ArrayList();final ChatAdapter chatAdapter = newChatAdapter(chatData);
chatList.setAdapter(chatAdapter);
LinearLayoutManager layoutManager= new LinearLayoutManager(this);
chatList.setLayoutManager(layoutManager);final Spinner targetUser =findViewById(R.id.targetUser);
String[] data= {"张三","李四"};
ArrayAdapter adapter = new ArrayAdapter (this,R.layout.support_simple_spinner_dropdown_item,data);
targetUser.setAdapter(adapter);final EditText chatContent =findViewById(R.id.chatContent);
Button chatSubmit=findViewById(R.id.chatSubmit);
chatSubmit.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {if(!chatContent.getText().toString().equals("")) {
String user=targetUser.getSelectedItem().toString();
chatData.add(newChat(user, chatContent.getText().toString()));
chatAdapter.notifyItemInserted(chatData.size()- 1);
chatList.scrollToPosition(chatData.size()- 1);
chatContent.setText("");
}
}
});
}
}
显示效果:
更多推荐
所有评论(0)