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;
}
}
网友评论