美文网首页
自定义listview(标题栏自动隐藏,出现),左右聊天的lis

自定义listview(标题栏自动隐藏,出现),左右聊天的lis

作者: dong_hui | 来源:发表于2017-01-10 15:21 被阅读29次

1.listview中标题栏自动隐藏和出现:

重写overScrollBy方法,将maxOverScrollY 替换为自定义的弹出的长度mMaxYOverscrollDistance
public class myListView  extends ListView {
    private static final int MAX_Y_OVERSCROLL_DISTANCE = 5zi0;
    private Context  mContext;
    private int mMaxYOverscrollDistance;

    public myListView(Context context) {
        super(context);
        mContext=context;
        initBounceListView();
    }
    public myListView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext=context;
        initBounceListView();
    }
    public myListView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        mContext=context;
        initBounceListView();

    }
    //重写该方法,将maxOverScrollY 替换为自定义的弹出的长度mMaxYOverscrollDistance
    @Override
    protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
        return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, mMaxYOverscrollDistance, isTouchEvent);
    }
       //针对不同屏幕的适配
    private void initBounceListView(){
        final DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
        final float density = metrics.density;
        mMaxYOverscrollDistance = (int) (density * MAX_Y_OVERSCROLL_DISTANCE);
    }
}

2.聊天界面中的listview的adapter:

主要是getItemViewType,getViewTypeCount  重写这两个方法,然后在getView中针对左右,做个布局区分
public class ChatListViewAdapter  extends BaseAdapter {
    private List<ChatBean>  chatBeanList;
    private LayoutInflater  mInflater;

    public ChatListViewAdapter(Context  context,List<ChatBean> chatBeanList) {
        this.chatBeanList = chatBeanList;
         mInflater=LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return chatBeanList.size();
    }

    @Override
    public Object getItem(int position) {
        return chatBeanList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

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

    @Override
    public int getViewTypeCount() {
        return 2;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
          ViewHolder  viewHolder;
        if (convertView==null){
            if (getItemViewType(position)==0){
                viewHolder=new ViewHolder();
                convertView=mInflater.inflate(R.layout.chat_left,null);
                viewHolder.content= (TextView) convertView.findViewById(R.id.left_content);
                viewHolder.icon= (ImageView) convertView.findViewById(R.id.left_head);
            }else {
                viewHolder=new ViewHolder();
                convertView=mInflater.inflate(R.layout.chat_right,null);
                viewHolder.content= (TextView) convertView.findViewById(R.id.right_content);
                viewHolder.icon= (ImageView) convertView.findViewById(R.id.right_head);
            }
            convertView.setTag(viewHolder);

        }else {
          viewHolder= (ViewHolder) convertView.getTag();
        }
        viewHolder.icon.setImageBitmap(chatBeanList.get(position).getIcon());
        viewHolder.content.setText(chatBeanList.get(position).getContent());

        return convertView;

    }

    public  class  ViewHolder{
        ImageView  icon;
        TextView    content;
    }

}

相关文章

网友评论

      本文标题:自定义listview(标题栏自动隐藏,出现),左右聊天的lis

      本文链接:https://www.haomeiwen.com/subject/uiwkbttx.html