新聞中心
本篇文章給大家分享的是有關(guān)怎么在android中利用recyclerview制作一個(gè)聊天界面,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)提供從項(xiàng)目策劃、軟件開(kāi)發(fā),軟件安全維護(hù)、網(wǎng)站優(yōu)化(SEO)、網(wǎng)站分析、效果評(píng)估等整套的建站服務(wù),主營(yíng)業(yè)務(wù)為成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),成都App制作以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。創(chuàng)新互聯(lián)深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
實(shí)現(xiàn)代碼:
package com.itheima74.chatui; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.Button; import android.widget.EditText; import java.util.ArrayList; /** * 聊天界面,使用recyclerview實(shí)現(xiàn) * 效果不好,發(fā)送的消息不能靠右對(duì)齊, * 不知何故,怎么弄都弄不好,請(qǐng)教! * 問(wèn)題的解決:用Relativelayout代替linearlayout可以解決上述問(wèn)題 */ public class MainActivity extends AppCompatActivity { private RecyclerView recyclerview; private EditText et_input; private ArrayListmMsgList; private MsgAdapter mMsgAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); initAdapter(); } private void initAdapter() { mMsgAdapter = new MsgAdapter(mMsgList); recyclerview.setAdapter(mMsgAdapter); } /** * 初始化數(shù)據(jù)源 */ private void initData() { mMsgList = new ArrayList<>(); mMsgList.add(new Msg("Hello!", Msg.TYPE_RECEIVE)); mMsgList.add(new Msg("Hello! Who is that?", Msg.TYPE_SEND)); mMsgList.add(new Msg("This is Jack,Nice to meet you!", Msg.TYPE_RECEIVE)); } /** * 初始化控件 */ private void initView() { recyclerview = (RecyclerView) findViewById(R.id.recyclerview); et_input = (EditText) findViewById(R.id.et_input); Button bt_send = (Button) findViewById(R.id.bt_send); LinearLayoutManager layoutManager = new LinearLayoutManager(this); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); recyclerview.setLayoutManager(layoutManager); bt_send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String content = et_input.getText().toString().trim(); // 如果用戶(hù)沒(méi)有輸入,則是一個(gè)空串"" if (!content.isEmpty()) { mMsgList.add(new Msg(content, Msg.TYPE_SEND)); // 通知數(shù)據(jù)適配器刷新界面 mMsgAdapter.notifyDataSetChanged(); // 定位到最后一行 recyclerview.scrollToPosition(mMsgList.size() - 1); // 輸入框置空 et_input.setText(""); } } }); } }
package com.itheima74.chatui; /** * Created by My on 2017/3/3. */ class Msg { static final int TYPE_RECEIVE = 1; static final int TYPE_SEND = 2; String content; int type; Msg(String content, int type) { this.content = content; this.type = type; } }
package com.itheima74.chatui; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.ArrayList; /** * Created by My on 2017/3/3. */ class MsgAdapter extends RecyclerView.Adapter{ private ArrayList mMsgList; MsgAdapter(ArrayList mMsgList) { this.mMsgList = mMsgList; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(parent.getContext(), R.layout.recyclerview_item, null); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { Msg msg = mMsgList.get(position); if (msg.type == Msg.TYPE_RECEIVE) { holder.tv_receive.setVisibility(View.VISIBLE); holder.tv_send.setVisibility(View.GONE); holder.tv_receive.setText(msg.content); } else { holder.tv_send.setVisibility(View.VISIBLE); holder.tv_receive.setVisibility(View.GONE); holder.tv_send.setText(msg.content); } } @Override public int getItemCount() { return mMsgList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { private TextView tv_receive; private TextView tv_send; ViewHolder(View itemView) { super(itemView); tv_receive = (TextView) itemView.findViewById(R.id.tv_receive); tv_send = (TextView) itemView.findViewById(R.id.tv_send); } } }
xml:
以上就是怎么在android中利用recyclerview制作一個(gè)聊天界面,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
標(biāo)題名稱(chēng):怎么在android中利用recyclerview制作一個(gè)聊天界面
分享鏈接:http://www.dlmjj.cn/article/ieddjg.html