zoukankan      html  css  js  c++  java
  • ListView的使用——聊天窗口

    一、步骤

    1、在layout创建两个布局,分别是自己的回答条,和对方的回答条。

    2、创建ChatMessage这个类,成员变量有头像地址、聊天内容、所属类型(假设1表示对方,2表示自己)。

    3、创建ChatBaseAdapter,故名思意继承BaseAdapter。就主要展示下getView()方法

     private ArrayList<ChatMessage> mChatMessages;
    
     @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ChatViewHolder chatViewHolder = null;
            //获取当前View所处List容器中的数据
            ChatMessage chatMessage = (ChatMessage)getItem(position);
            if (convertView == null){
                chatViewHolder = new ChatViewHolder();
                //当为1的时候,创建对方布局
                if (getItemViewType(position) == 1) {
                    convertView = LayoutInflater.from(mContext).inflate(R.layout.adapter_left, parent, false);
                    chatViewHolder.ivIcon = (ImageView) convertView.findViewById(R.id.left_iv_icon);
                    chatViewHolder.tvContent = (TextView) convertView.findViewById(R.id.left_tv_content);
                }
                //否则创建自己的布局
                else {
                    convertView = LayoutInflater.from(mContext).inflate(R.layout.adapter_right, parent, false);
                    chatViewHolder.ivIcon = (ImageView) convertView.findViewById(R.id.right_iv_icon);
                    chatViewHolder.tvContent = (TextView) convertView.findViewById(R.id.right_tv_content);
                }
    
                convertView.setTag(chatViewHolder);
            }
            else {
                chatViewHolder = (ChatViewHolder) convertView.getTag();
            }
            //输入数据
            chatViewHolder.ivIcon.setImageResource(chatMessage.getPictureUrl());
            chatViewHolder.tvContent .setText(chatMessage.getTextContent());
            return convertView;
        }
    ChatBaseAdapter

    同时BaseAdapter还提供以下方法,确定ListView显示的布局的类型

       @Override
        public int getItemViewType(int position) {
            return mChatMessages.get(position).getType();
        }
    
        @Override
        public int getViewTypeCount() {
            return 2;
        }
    ChatBaseAdapter
  • 相关阅读:
    ♫【插件】插入Flash swfobject
    ☀【Alice】
    _#【Vim】
    _#【选择器】链式class选择器
    _#【HTML】
    _#【CSS】display:inlineblock
    【折叠】一
    图解SSIS自动维护SQL索引
    wininet.dll函数库:检查网络状态
    sqlserver中动态sql语句应用
  • 原文地址:https://www.cnblogs.com/rookiechen/p/5513324.html
Copyright © 2011-2022 走看看