聊天界面demo
来源:互联网 发布:中国的网络是局域网 编辑:程序博客网 时间:2024/06/08 02:29
简易demo:
activity_main:
<?xml version="1.0" encoding="utf-8"?><LinearLayout 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="#d8e0e8" android:orientation="vertical" tools:context="com.example.chatdemo.MainActivity"> <ListView android:id="@+id/msg_list_view" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:divider="#0000"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:id="@+id/input_text" android:maxLines="2" android:hint="请输入信息"/> <Button android:id="@+id/sent" android:text="发送" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout></LinearLayout>
msg_item:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:padding="10dp" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/left_layout" android:layout_gravity="left" android:background="@drawable/message_left"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/left_msg" android:layout_gravity="center" android:layout_margin="10dp" android:textColor="#fff"/> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/right_layout" android:layout_gravity="right" android:background="@drawable/message_right"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/right_msg" android:layout_gravity="center" android:layout_margin="10dp" android:textColor="#fff"/> </LinearLayout></LinearLayout>
Msg:
public class Msg { public static final int TYPE_RECEIVED = 0; public static final int TYPE_SENT = 1; private String content; private int type; public Msg(String content,int type){ this.content = content; this.type = type; } public String getContent() { return content; } public int getType() { return type; }}
MsgAdapter:
public class MsgAdapter extends ArrayAdapter<Msg> { private int resourceId; public MsgAdapter(Context context,int textViewResourceId,List<Msg> objects){ super(context,textViewResourceId,objects); resourceId = textViewResourceId; } @Override public View getView(int position, View convertView, ViewGroup parent) { Msg msg = getItem(position); View view; ViewHolder viewHolder; if(convertView==null){ view = LayoutInflater.from(getContext()).inflate(resourceId,null); viewHolder = new ViewHolder(); viewHolder.leftLayout = (LinearLayout)view.findViewById(R.id.left_layout); viewHolder.leftMsg = (TextView)view.findViewById(R.id.left_msg); viewHolder.rightLayout = (LinearLayout)view.findViewById(R.id.right_layout); viewHolder.rightMsh = (TextView)view.findViewById(R.id.right_msg); view.setTag(viewHolder); } else { view = convertView; viewHolder = (ViewHolder)view.getTag(); } if(msg.getType() == Msg.TYPE_RECEIVED){ viewHolder.leftLayout.setVisibility(View.VISIBLE); viewHolder.rightLayout.setVisibility(View.GONE); viewHolder.leftMsg.setText(msg.getContent()); } else { viewHolder.rightLayout.setVisibility(View.VISIBLE); viewHolder.leftLayout.setVisibility(View.GONE); viewHolder.rightMsh.setText(msg.getContent()); } return view; } class ViewHolder { LinearLayout leftLayout; LinearLayout rightLayout; TextView leftMsg; TextView rightMsh; }}
MainActivity:
public class MainActivity extends AppCompatActivity { private ListView msgListView; private EditText inputText; private Button send; private MsgAdapter adapter; private List<Msg> msgList = new ArrayList<Msg>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); initMsg(); adapter = new MsgAdapter(MainActivity.this,R.layout.msg_item,msgList); inputText = (EditText)findViewById(R.id.input_text); send = (Button)findViewById(R.id.sent); msgListView = (ListView)findViewById(R.id.msg_list_view); msgListView.setAdapter(adapter); send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String content = inputText.getText().toString(); if(!"".equals(content)){ Msg msg = new Msg(content,Msg.TYPE_SENT); msgList.add(msg); adapter.notifyDataSetChanged(); msgListView.setSelection(msgList.size()); inputText.setText(""); } } }); } public void initMsg(){ Msg msg1 = new Msg("11111111111",Msg.TYPE_RECEIVED); msgList.add(msg1); Msg msg2 = new Msg("2222222222",Msg.TYPE_SENT); msgList.add(msg2); }}
0 0
- 聊天界面Demo
- 聊天界面Demo
- 聊天界面demo
- 简单的聊天界面demo FaceChatDemo
- 仿QQ聊天列表界面demo
- 实现微信中的聊天界面Demo
- 使用RecyclerView编写聊天界面及demo
- Android聊天的界面的小DEMO
- iOS 类似微信,QQ聊天界面的气泡聊天简单实现Demo
- iOS 类似微信,QQ聊天界面的气泡聊天简单实现Demo
- 聊天界面
- 聊天界面
- 聊天界面
- 聊天界面
- 聊天界面
- 聊天界面
- 聊天界面
- 聊天界面
- scala基础----->scalacheat
- poj1062——昂贵的聘礼(dijkstra变形)
- __stdcall、__cdcel、__fastcall区别
- AsyncTask的基本使用
- jzoj 2554. 【NOIP2011模拟9.7】帕秋莉·诺蕾姬
- 聊天界面demo
- 数据类型
- 单例模式
- JQuery常用插件
- maven实现JS+CSS自动压缩
- 【64】滑动窗口的最大值
- CAS
- 【C++】命名空间
- 及时显示和同步消息