ArrayAdapter实现仿QQ左右发送消息显示
来源:互联网 发布:sqlserver修改主键值 编辑:程序博客网 时间:2024/06/05 10:53
效果图
代码
package com.xiaoke.arrayadapte;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;public class MainActivity extends Activity {// private String[] data;private List<String> list;private EditText et;private ListView listview;private int index = 0;private ArrayAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listview = (ListView) findViewById(R.id.lv_id);et = (EditText) findViewById(R.id.et_id);list = new ArrayList<String>();Button btn;adapter = new PangAdapter(this, -1);listview.setAdapter(adapter);btn = (Button) findViewById(R.id.btn_left_a_id);btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 左边发送消息sendMessege("#");}});btn = (Button) findViewById(R.id.btn_right_id);btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 右边发送消息sendMessege("&");}});// data = new String[100];// for (int i = 0; i < 100; i++) {// data[i] = "数据" + i;// }// ArrayAdapter adapter=new ArrayAdapter(this,// android.R.layout.simple_list_item_1, data);}// 更新数据并且更新界面public void sendMessege(String str) {list.add(et.getText().toString() + str);et.setText(null);// 界面更新adapter.notifyDataSetChanged();listview.setSelection(ListView.FOCUS_DOWN);}public class PangAdapter extends ArrayAdapter {private LayoutInflater flater = null;public PangAdapter(Context context, int resource) {super(context, resource);//flater = LayoutInflater.from(context);}// 获取数组的长度@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// 不需多次调用,if (convertView == null) {convertView = flater.inflate(R.layout.test, null);Log.d("创建数据", list.get(position));}TextView tvLeft = (TextView) convertView.findViewById(R.id.text_left_a1_id);TextView tvRight = (TextView) convertView.findViewById(R.id.text_right_a2_id);ImageView imageLeft = (ImageView) convertView.findViewById(R.id.image_left_a1_id);ImageView imageRight = (ImageView) convertView.findViewById(R.id.image_right_a2_id);// 取出每次输入后最后一个字符char c = list.get(position).charAt(list.get(position).length() - 1);Log.d(String.valueOf(c), String.valueOf(c) + "1");// 每次输入的字符串添加到StringBuffer中StringBuffer strbuffer = new StringBuffer();strbuffer.append(list.get(position));// 最后一个字符判断是左边发送还是右边发送消息#代表左边&代表右边if (String.valueOf(c).equals("&")) {// 去除每次传入的最后一个字符strbuffer.deleteCharAt(strbuffer.length() - 1);String s = strbuffer.toString();// 右边字符串设置tvRight.setText(s);// imageLeft.setImageResource(-1);// 右边字图片设置imageRight.setImageResource(R.drawable.ic_launcher);// 左边字图片设置imageLeft.setImageBitmap(null);// 左边字符串设置tvLeft.setText("");// 清空缓存数组中的内容strbuffer.delete(0, strbuffer.length());Log.d("tvA2", "出现tvA2");} else if (String.valueOf(c).equals("#")) {// 去除每次传入的最后一个字符strbuffer.deleteCharAt(strbuffer.length() - 1);String s = strbuffer.toString();// 左边字符串设置tvLeft.setText(s);// 右边字符串设置tvRight.setText("");// 左边字图片设置imageLeft.setImageResource(R.drawable.ic_launcher);// imageRight.setImageResource(-1);// 右边字图片设置imageRight.setImageBitmap(null);// 清空缓存数组中的内容strbuffer.delete(0, strbuffer.length());Log.d("tvA1", "出现tvA1");}return convertView;}}}
布局文件
<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:orientation="vertical" tools:context="com.xiaoke.arrayadapte.MainActivity" > <ListView android:id="@+id/lv_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" > </ListView> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" ><Button android:id="@+id/btn_left_a_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送" /> <EditText android:id="@+id/et_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> <Button android:id="@+id/btn_right_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送" /> </LinearLayout></LinearLayout>
<?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="match_parent" > <ImageView android:id="@+id/image_left_a1_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="20dp" /> <TextView android:id="@+id/text_left_a1_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toRightOf="@id/image_left_a1_id" android:textColor="@android:color/holo_red_dark" android:textSize="20sp" android:textStyle="bold" /> <ImageView android:id="@+id/image_right_a2_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="20dp" /> <TextView android:id="@+id/text_right_a2_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toLeftOf="@id/image_right_a2_id" android:textColor="@android:color/holo_red_dark" android:textSize="20sp" android:textStyle="bold" /></RelativeLayout>
0 0
- ArrayAdapter实现仿QQ左右发送消息显示
- C#实现仿QQ消息窗口
- wpf实现仿qq消息提示框
- C#实现QQ消息发送工具
- android仿qq微信的消息数量显示功能
- WinForm仿QQ系统消息框的API实现
- WinForm仿QQ系统消息框的API实现
- WinForm仿QQ系统消息框的API实现
- Android 轻松实现仿QQ消息下拉刷新
- 高仿QQ首页消息和电话切换的实现
- Android ToolBar实现高仿QQ消息与电话
- Android仿qq实现锁屏消息提醒
- Android自定义View仿QQ消息拖拽气泡实现
- QQ消息发送器
- QQ发送消息格式
- 模拟QQ发送消息
- Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现【5】消息发送,接收;修改心情的实现
- Android高仿QQ左右滑动菜单的效果实现方式之安卓菜单左右滑动效果实现方式
- linux中find批量删除空文件及空文件夹脚本
- oracle
- 黑马程序员——Java基础语法(一.关键字、标识符、注释、常量和变量、运算符)
- url加密调研报告
- FFMpeg+SDL多线程播放器
- ArrayAdapter实现仿QQ左右发送消息显示
- PathFileExists检查文件是否存在
- Java内功提升之运算符
- 基本的线程机制(一)
- 前端代码检测利器——eslint for sublime安装指南
- SSH:Struts1框架(几种常用的Action)
- Servlet:ServletContext
- .NET 内存泄漏问题
- 在Linux上安装Memcached服务