Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Gridview:拖动项目_Java_Android_Gridview_Draggable_Drag - Fatal编程技术网

Java Android Gridview:拖动项目

Java Android Gridview:拖动项目,java,android,gridview,draggable,drag,Java,Android,Gridview,Draggable,Drag,我感谢那些试图帮助我的人,对我来说是如此重要 我正在尝试为gridview中的项目实现拖动,我在internet上看到了很多可用的示例,但无法理解:/ 我的xml中有一个gridview,其中包含不同的图像: <GridView android:id="@+id/contenedorPictogramas" android:layout_width="780dp" android:layout_height="520dp" android:columnWidth="160dp" and

我感谢那些试图帮助我的人,对我来说是如此重要

我正在尝试为gridview中的项目实现拖动,我在internet上看到了很多可用的示例,但无法理解:/

我的xml中有一个gridview,其中包含不同的图像:

<GridView 
android:id="@+id/contenedorPictogramas"
android:layout_width="780dp" 
android:layout_height="520dp"
android:columnWidth="160dp"
android:numColumns="auto_fit"
android:verticalSpacing="20dp"
android:horizontalSpacing="20dp"
android:stretchMode="columnWidth"
android:gravity="center"
android:background="@drawable/shape"
/>
要将图像设置到gridview中,我尝试执行以下操作:

GridView gridview = (GridView) findViewById(R.id.contenedorPictogramas);
gridview.setOnTouchListener(new OnTouchListener() {         
      public boolean onTouch(View arg0, MotionEvent arg1) {
          arg0.setOnTouchListener(new MyTouchListener());//HERE IS THE PROBLEM (I THING)
          return false;
      }
  });

但是我拖动了gridview的所有项目:/

您应该为grid view项目设置触控监听器,而不是在grid view上

您可以在适配器的getview方法中添加touch侦听器

样品-

public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {  // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mThumbIds[position]);
**imageView.setOnTouchListener(<your listener>);**
        return imageView;
    }
public View getView(int位置、视图转换视图、视图组父视图){
图像视图图像视图;
如果(convertView==null){//如果它没有被回收,初始化一些属性
imageView=新的imageView(mContext);
setLayoutParams(新的GridView.LayoutParams(85,85));
imageView.setScaleType(imageView.ScaleType.CENTER\U裁剪);
设置填充(8,8,8,8);
}否则{
imageView=(imageView)convertView;
}
setImageResource(mThumbIds[position]);
**setOnTouchListener()**
返回图像视图;
}

谢谢您的回答。我这样想,但我不知道如何设置项,我尝试设置一个项,但我做不到:gridview.getItemAtPosition(1.setOnTouchListener(new MyTouchListener());你知道我该怎么做吗?在你的网格适配器的getView()中。参考编辑的答案
public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {  // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mThumbIds[position]);
**imageView.setOnTouchListener(<your listener>);**
        return imageView;
    }