学习笔记《Android群英传》——第四章 ListView的使用技巧

学习笔记《Android群英传》——第四章 ListView的使用技巧

章节目录:

聊天列表

方法一:
提供两个xml消息布局(接收方的、发送方的),使用

@Override
    public int getItemViewType(int position) {
        ChatListBean bean = mData.get(position);
        return bean.getType();
    }

    @Override
    public int getViewTypeCount() {
        return VIEW_TYPE_COUNT;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            if(getItemViewType(position) == VIEW_TYPE_SEND){
                holder = new ViewHolder();
                convertView = mInflater.inflate(R.layout.item_chat_send, null);
                holder.text = (TextView) convertView.findViewById(R.id.tv_item_send);
                holder.image = (ImageView) convertView.findViewById(R.id.img_item_send);
            }else {
                holder = new ViewHolder();
                convertView = mInflater.inflate(R.layout.item_chat_receive, null);
                holder.text = (TextView) convertView.findViewById(R.id.tv_item_receive);
                holder.image = (ImageView) convertView.findViewById(R.id.img_item_receive);
            }
            convertView.setTag(holder);
        }else {
            holder = (ViewHolder)convertView.getTag();
        }
        holder.text.setText(mData.get(position).getText());
        holder.image.setImageBitmap(mData.get(position).getIcon());
        return convertView;
    }

这样的方式来控制每一项item的样式

方法二:
只提供一个xml消息布局(接收方和发送方的同时存在),在

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            if(getItemViewType(position) == VIEW_TYPE_SEND){
                //此消息是发送方的,则显示发送方的布局控件,隐藏接收方的布局控件
            }else {
                //此消息是接收方的,则显示接收方的布局控件,隐藏发送方的布局控件
            }
            convertView.setTag(holder);
        }else {
            holder = (ViewHolder)convertView.getTag();
        }
        holder.text.setText("xxx");       
        return convertView;
    }

此方法里根据消息所属的类别,自动控制各方布局的显隐性。

自动显示、隐藏布局的ListView

使用“ListView的滑动监听”来触发“指定控件”进行隐藏、显示的“动画”。
拓展:
1.CollapsingToolbarLayout可实现折叠式标题栏
2.自定义控件实现Android沉浸式状态栏 + actionBar渐变 + scrollView顶部伸缩

猜你喜欢

转载自blog.csdn.net/an_nal/article/details/79359033