代码之家  ›  专栏  ›  技术社区  ›  Im Batman

用于GridView中Android图像滑块的setOnClickListener

  •  0
  • Im Batman  · 技术社区  · 8 年前

    我已经实施了 AndroidImageSlider

    我想既然imageSlider使用touchEvent来滑动图像,它可能已经禁用了click事件。但是我在图书馆里找不到它。

    我的gridview中有一个复选框,当用户单击gridview时,我想将其选中或取消选中。

            mViewHolder.imageViewSlider.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Log.e("CLICKED","CLICKED"); // this is not triggering
                }
            });
    
          convertView.setTag(mViewHolder);
                convertView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                 // This is Working
                  mViewHolder.checkBox.setChecked(!mViewHolder.checkBox.isChecked());
                    }
           });
    

    使现代化

    但是有一种点击滑动的方法。但我不知道如何使用它触发复选框。

    for(){
        DefaultSliderView textSliderView = new DefaultSliderView(mContext);
        textSliderView        
            .image(imagePath)
            .setOnSliderClickListener(this)
            .description(""+position)
            .setScaleType(BaseSliderView.ScaleType.FitCenterCrop);
    
        mViewHolder.imageView.addSlider(textSliderView);
    }
    
    
       @Override
        public void onSliderClick(BaseSliderView slider) {
          // This one gets triggered but no idea making checkbox trigger
        }
    
    2 回复  |  直到 8 年前
        1
  •  0
  •   wexeteme    8 年前

    首先,制作自己的适配器来扩展gridView元素。在您的情况下,适配器将是AndroidImageSlider元素。

    我在我的案例中所做的示例:

    public class ImageAdapter extends BaseAdapter {
    
        private Context mContext;
        private int iw, ih;
        private String tag = "**Template wallpapers**";
    
        private Activity myActivity;
    
        private ImageLoader imageLoader = null;
    
        public ImageAdapter(Activity activity, Context c) {
            myActivity = activity;
            mContext = c;
            iw = commonClass.iwidth;
            ih = commonClass.iheight;
    
            imageLoader = ImageLoader.getInstance();
        }
    
        @Override
        public int getCount() {
            return MainActivity_GridView.mThumbIds.size();
        }
    
        @Override
        public String getItem(int position) {
            return MainActivity_GridView.mThumbIds.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
        static class ViewHolder {
            ImageView image;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
    
            View row = convertView;
            ViewHolder holder = null;
    
            if (convertView == null) {
    
                LayoutInflater inflater = myActivity.getLayoutInflater();
                row = inflater.inflate(R.layout.row_grid, parent, false);
                holder = new ViewHolder();
                holder.image = (ImageView) row.findViewById(R.id.image);
                holder.image.getLayoutParams().width = iw;
                holder.image.getLayoutParams().height = ih;
                holder.image.setScaleType(ImageView.ScaleType.CENTER_CROP);
                holder.image.setPadding(0, 0, 0, 0);
                row.setTag(holder);
    
            } else {
                holder = (ViewHolder) row.getTag();
            }
    
            if(MainActivity_GridView.mThumbIds.get(position).matches("\\d+")){
                String imageUri = "drawable://" + MainActivity_GridView.mThumbIds.get(position);
                ImageAware imageAware = new ImageViewAware(holder.image, false);
                imageLoader.displayImage(imageUri, imageAware);
            }else{
                String imageUri = MainActivity_GridView.mThumbIds.get(position);
                ImageAware imageAware = new ImageViewAware(holder.image, false);
                imageLoader.displayImage(imageUri, imageAware);
            }
    
            return row;
        }
    }
    

    然后,只需聆听gridView的点击:

    GridView gv = (GridView) findViewById(R.id.gridView);
    ImageAdapter imAdapter = new ImageAdapter(this, context);
    
    imAdapter.notifyDataSetChanged();
    gv.invalidateViews();
    gv.setAdapter(imAdapter);
    
    gridview.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                // item has been clicked
                // you got the ID - so use that info to do what you want ^
            }
        });
    
        2
  •  0
  •   Im Batman    8 年前

    我最终使用以下方法更新数据库并重新加载ListView。这样我就可以勾选复选框了。

    public void onSliderClick(BaseSliderView slider) {
          // This one gets triggered but no idea making checkbox trigger
     }