Java Android Gridview:拖动项目
我感谢那些试图帮助我的人,对我来说是如此重要 我正在尝试为gridview中的项目实现拖动,我在internet上看到了很多可用的示例,但无法理解:/ 我的xml中有一个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
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;
}