国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

android recyclerview模擬聊天界面

2019-12-12 03:25:01
字體:
供稿:網(wǎng)友

本文實例為大家分享了android recyclerview模擬聊天界面的具體代碼,供大家參考,具體內(nèi)容如下

效果圖:

實現(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實現(xiàn) * 效果不好,發(fā)送的消息不能靠右對齊, * 不知何故,怎么弄都弄不好,請教! * 問題的解決:用Relativelayout代替linearlayout可以解決上述問題 */public class MainActivity extends AppCompatActivity { private RecyclerView recyclerview; private EditText et_input; private ArrayList<Msg> mMsgList; 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();  // 如果用戶沒有輸入,則是一個空串""  if (!content.isEmpty()) {   mMsgList.add(new Msg(content, Msg.TYPE_SEND));   // 通知數(shù)據(jù)適配器刷新界面   mMsgAdapter.notifyDataSetChanged();   // 定位到最后一行   recyclerview.scrollToPosition(mMsgList.size() - 1);   // 輸入框置空   et_input.setText("");  }  } }); }}
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#d8e0e8" android:orientation="vertical"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <EditText  android:id="@+id/et_input"  android:layout_width="0dp"  android:layout_height="wrap_content"  android:layout_weight="1"  android:hint="請輸入要發(fā)送的內(nèi)容" /> <Button  android:id="@+id/bt_send"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:text="發(fā)送" /> </LinearLayout></LinearLayout>
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<MsgAdapter.ViewHolder> { private ArrayList<Msg> mMsgList; MsgAdapter(ArrayList<Msg> 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:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp"> <TextView android:id="@+id/tv_receive" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/message_left" android:gravity="center" android:text="who?" android:textSize="20sp" /> <TextView android:id="@+id/tv_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_below="@id/tv_receive" android:background="@drawable/message_right" android:gravity="center" android:text="i am your father" android:textSize="20sp" /></RelativeLayout>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 万源市| 河西区| 青铜峡市| 沁水县| 贵阳市| 邳州市| 海原县| 寻乌县| 奈曼旗| 吴旗县| 吴忠市| 普定县| 平定县| 寻乌县| 富川| 镇坪县| 洱源县| 丰都县| 珠海市| 宣武区| 沈丘县| 汕尾市| 西充县| 手机| 龙川县| 沙坪坝区| 凤山市| 大余县| 咸丰县| 和平县| 海宁市| 肃南| 会东县| 镇赉县| 临漳县| 宁化县| 云浮市| 南康市| 舞阳县| 山阴县| 军事|