滑动事件问题

最近用到了Gallery这个控件,我的adapter是这样写的:

public GalleryAdapter(Context mContext, List<String> mData) {
    this.mContext = mContext;
    this.mData = mData;
}

// 决定了item显示的个数
@Override
public int getCount() {
    return mData.size();
}

// 根据postition获取对应item的数据
@Override
public Object getItem(int position) {
    return mData.get(position);
}

// 获取对应postition的item的ID
@Override
public long getItemId(int position) {
    return position;
}

// 创建对应的item的视图(View)
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    if (null == convertView) {
        convertView = new ImageView(mContext);
        convertView.setLayoutParams(new Gallery.LayoutParams(200, 400));
    }
    // 设置image大小
    ((ImageView) convertView).setScaleType(ImageView.ScaleType.FIT_CENTER);
    convertView.setPadding(5, 5, 5, 5);
    GliderManager.getGlide().load(mData.get(position), com.chad.library.R.drawable.abc_list_focused_holo, ((ImageView) convertView));

    convertView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (null != mItemClickListener) mItemClickListener.onItemClick(v, position);
        }
    });
    return convertView;
}

public void setOnItemClickListener(ESTOnItemClickListener listener) {
    mItemClickListener = listener;
}

这么看看没什么问题(至少我感觉没什么问题),但是就是这样后居然滑动不了,后来看了看拦截事件的方法,Gallery没有重写这个方法,这个很是郁闷了,在网上找到了这个替代的方案,不使用onClickListener,使用onTouchListener然后return为false这样就成功的把事件传递到Gallery了改后是这样的

public GalleryAdapter(Context mContext, List<String> mData) {
    this.mContext = mContext;
    this.mData = mData;
}

// 决定了item显示的个数
@Override
public int getCount() {
    return mData.size();
}

// 根据postition获取对应item的数据
@Override
public Object getItem(int position) {
    return mData.get(position);
}

// 获取对应postition的item的ID
@Override
public long getItemId(int position) {
    return position;
}

// 创建对应的item的视图(View)
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    if (null == convertView) {
        convertView = new ImageView(mContext);
        convertView.setLayoutParams(new Gallery.LayoutParams(200, 400));
    }
    // 设置image大小
    ((ImageView) convertView).setScaleType(ImageView.ScaleType.FIT_CENTER);
    convertView.setPadding(5, 5, 5, 5);
    GliderManager.getGlide().load(mData.get(position), com.chad.library.R.drawable.abc_list_focused_holo, ((ImageView) convertView));
    convertView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (null != mItemClickListener) mItemClickListener.onItemClick(v, position);
            return false;
        }
    });
    return convertView;
}

public void setOnItemClickListener(ESTOnItemClickListener listener) {
    mItemClickListener = listener;
}

猜你喜欢

转载自blog.csdn.net/qq_39191116/article/details/80480627
今日推荐