-1
請幫助我的問題:GridView的onTouchListener不工作,因爲我期望
我有一個gridview和touchListener的元素。問題是當我觸摸一個元素,我想改變它的背景,當觸摸完成(Action up或ouside)來顯示初始背景。問題是當我點擊一個元素然後拖動我的手指在另一個元素上,最初的元素改變它的背景,但是當我將手指拖到另一個元素上並完成觸摸後,第一個觸摸元素的背景不會改變爲最初的背景。這個想法是,當我從gridview中觸摸一個elemnt來獲得他的鎖。這是5月代碼:
package com.mines.gui.components;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import com.mines.globals.GlobalVariables;
public class MinesView extends GridView {
private int[] length = new int[81];
private final Bitmap grid0 = Bitmap.createBitmap(GlobalVariables.icons, 0, 88, 50, 50);
private final Bitmap grid1 = Bitmap.createBitmap(GlobalVariables.icons, 50, 88, 50, 50);
private int id;
public MinesView(Context context) {
super(context);
setAdapter(new MineAdapter(context));
setStretchMode(GridView.NO_STRETCH);
setNumColumns(9);
setHorizontalSpacing(40);
}
class MineAdapter extends BaseAdapter {
private Context context;
public MineAdapter(Context context) {
this.context = context;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public int getCount() {
return length.length;
}
public View getView(int position, View convertView, ViewGroup parent) {
final ImageView imageView;
if(convertView == null) {
imageView = new ImageView(context);
imageView.setLayoutParams(new GridView.LayoutParams(40, 40));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
} else {
imageView = (ImageView) convertView;
}
imageView.setBackgroundDrawable(new BitmapDrawable(grid0));
imageView.setId(position);
imageView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View arg0, MotionEvent arg1) {
switch (arg1.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN:
imageView.setBackgroundDrawable(new BitmapDrawable(grid1));
break;
case MotionEvent.ACTION_OUTSIDE:
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
imageView.setBackgroundDrawable(new BitmapDrawable(grid0));
break;
}
return false;
}
});
imageView.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
}
});
return imageView;
}
}
}
不起作用甚至不會進入if循環。我不知道當我觸及一個網格的元素時是否可以識別視圖 – moctavianro
Hello User,請參閱更新後的代碼。 –
我解決了由changihg從按鈕到複選框的超級類的問題..花花公子...更有幫助請與android初學者 – moctavianro