zoukankan      html  css  js  c++  java
  • 【原创】SimpleAdatper动态改变Layout布局

    大部分有聊天功能的APP的聊天界面都是使用上图所示的界面布局,即本方和对方的聊天内容分别放置在屏幕的左右两边。

    要实现上述的效果,可以使用ListView绑定一个SimpleAdatper子类,在SimpleAdatper子类中重写getView方法。在getView中判断消息是谁发送的,并返回相应的View:

        //定义一个扩展的SimpleAdapter
        private class ExSimpleAdapter extends SimpleAdapter{
            
            public ExSimpleAdapter(Context context,
                    List<? extends Map<String, ?>> data, int resource,
                    String[] from, int[] to) {
                super(context, data, resource, from, to);
                // TODO Auto-generated constructor stub
            }
    
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                // TODO Auto-generated method stub
                LayoutInflater mLayoutInflater = LayoutInflater.from(ChatActivity.this);
                if(mMsgFromList.get(position))
                    convertView = mLayoutInflater.inflate(R.layout.message_right, null);
                else
                    convertView = mLayoutInflater.inflate(R.layout.message_left, null);
                
                return super.getView(position, convertView, parent);
            }
        }

    1. 这里message_right和message_left就是左右布局的Layout.

    2. private ArrayList<Boolean> mMsgFromList = new ArrayList<Boolean>(); 用于记录每条消息是谁发送的。

    这样每次调用mSimpleAdapter的notifyDataSetChanged()方法就会更新相应的聊天界面了。

  • 相关阅读:
    6-8 adaboost分类器2
    6-7 adaboost分类器1
    6-6 Haar特征3
    6-5 Haar特征2
    6-4 Haar特征1
    6-3 图片合成视频
    6-2 视频分解图片
    Linux操作系统六大优点
    Linux系统正则表达式用法笔记
    Linux系统正则表达式用法笔记
  • 原文地址:https://www.cnblogs.com/hengfeng/p/2907717.html
Copyright © 2011-2022 走看看