Android 网格视图setOnItemClickListener不工作

Android 网格视图setOnItemClickListener不工作,android,android-listview,onclicklistener,android-gridview,android-adapter,Android,Android Listview,Onclicklistener,Android Gridview,Android Adapter,我的监听器不工作。 MyCode是: public class ReportAboutProblem extends ActionBarActivity implements View.OnClickListener{ public final int CAMERA_RESULT = 0; GridView gridView; Button btnAddPhoto; ArrayList<Bitmap> myImages; public void onCreate(Bundle sa

我的监听器不工作。 MyCode是:

public class ReportAboutProblem extends ActionBarActivity implements View.OnClickListener{
public final int CAMERA_RESULT = 0;
GridView gridView;
Button btnAddPhoto;
ArrayList<Bitmap> myImages;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.report_about_problem_activity);
    getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#85abc4")));
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
    btnAddPhoto=(Button)findViewById(R.id.btn_add_photo);
    btnAddPhoto.setOnClickListener(this);
    gridView = (GridView) findViewById(R.id.grid_new);
    myImages=new ArrayList<Bitmap>();
    myImages.add(BitmapFactory.decodeResource(getResources(),
            R.drawable.ic_launcher));
    gridView.setOnItemClickListener(mItemClickListener);
    gridView.setAdapter(new CustomGridAdapter(this, myImages));

}
private AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {

        Toast.makeText(ReportAboutProblem.this, "You have clicked on item '"  + "'", Toast.LENGTH_SHORT).show();
    }
};
@Override
public void onClick(View v) {
    Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(cameraIntent, CAMERA_RESULT);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAMERA_RESULT) {
        Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
        myImages.add(thumbnail);
        gridView.setOnItemClickListener(mItemClickListener);
        gridView.setAdapter(new CustomGridAdapter(this, myImages));

    }
}
}
公共类ReportAboutProblem扩展了ActionBarActivity实现了View.OnClickListener{
公共最终int摄像机_结果=0;
GridView;
按钮btnAddPhoto;
arraylistmyimages;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.report关于问题活动);
getSupportActionBar().setBackgroundDrawable(新的ColorDrawable(Color.parseColor(“#85abc4”));
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT\u INPUT\u ADJUST\u PAN);
btnAddPhoto=(按钮)findviewbyd(R.id.btn\u add\u photo);
btnAddPhoto.setOnClickListener(此);
gridView=(gridView)findViewById(R.id.grid\u new);
myImages=newarraylist();
myImages.add(BitmapFactory.decodeResource(getResources()),
R.可牵引ic_发射器);
setOnItemClickListener(mItemClickListener);
setAdapter(新的CustomGridAdapter(this,myImages));
}
私有AdapterView.OnItemClickListener mItemClickListener=新AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父项、视图、整数位置、长id){
Toast.makeText(ReportAboutProblem.this,“您已经单击了项目“+”,Toast.LENGTH_SHORT).show();
}
};
@凌驾
公共void onClick(视图v){
Intent cameraIntent=新的Intent(MediaStore.ACTION\u IMAGE\u CAPTURE);
startActivityForResult(摄像机帐篷、摄像机结果);
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
if(requestCode==CAMERA\u结果){
位图缩略图=(位图)数据.getExtras().get(“数据”);
添加(缩略图);
setOnItemClickListener(mItemClickListener);
setAdapter(新的CustomGridAdapter(this,myImages));
}
}
}
我的适配器是:

public class CustomGridAdapter extends BaseAdapter {

private Context context;
//private final String[] gridValues;
ArrayList<Bitmap> arrayList;
ImageButton i1;

//Constructor to initialize values
public CustomGridAdapter(Context context, ArrayList<Bitmap> ob) {
    arrayList = ob;
    this.context = context;
    // this.gridValues     = gridValues;
}

@Override
public int getCount() {

    // Number of times getView method call depends upon gridValues.length
    return arrayList.size();
}

@Override
public Object getItem(int position) {

    return null;
}

@Override
public long getItemId(int position) {

    return 0;
}


// Number of times getView method call depends upon gridValues.length

public View getView( int position,  View convertView,  ViewGroup parent) {
    final int pos = position;

    Log.d("myLogs","position="+position);
    // LayoutInflator to call external grid_item.xml file

    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View gridView;
    if (convertView == null) {
        gridView = new View(context);
        gridView = inflater.inflate(R.layout.grid_item, null);
        ImageView imageView = (ImageView) gridView
                .findViewById(R.id.grid_item_image);
        Log.d("myLogs","Set image "+position+" image "+arrayList.get(position));
        imageView.setImageBitmap(arrayList.get(position));
    } else {

        gridView = (View) convertView;
    }

    return gridView;
}
}
公共类CustomGridAdapter扩展了BaseAdapter{
私人语境;
//私有最终字符串[]网格值;
ArrayList ArrayList;
图像按钮i1;
//构造函数初始化值
公共CustomGridAdapter(上下文,ArrayList ob){
arrayList=ob;
this.context=上下文;
//this.gridValues=gridValues;
}
@凌驾
public int getCount(){
//getView方法调用的次数取决于gridValues.length
返回arrayList.size();
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
//getView方法调用的次数取决于gridValues.length
公共视图getView(int位置、视图转换视图、视图组父视图){
最终int pos=位置;
Log.d(“myLogs”,“position=“+position”);
//LayoutFlator调用外部网格_item.xml文件
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
视图网格视图;
if(convertView==null){
gridView=新视图(上下文);
gridView=充气机。充气(R.layout.grid_项,空);
ImageView ImageView=(ImageView)gridView
.findviewbyd(R.id.grid\u item\u image);
Log.d(“myLogs”,“Set image”+位置+“image”+arrayList.get(位置));
setImageBitmap(arrayList.get(position));
}否则{
gridView=(视图)convertView;
}
返回gridView;
}
}
自定义gridView元素为:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="100dp"
          android:layout_height="100dp"
          android:padding="5dp" >

<ImageView
        android:id="@+id/grid_item_image"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginRight="10px"
        android:src="@drawable/ic_launcher" android:layout_alignParentLeft="true" android:layout_marginLeft="4dp"
        android:layout_alignParentTop="true" android:layout_marginTop="4dp">

</ImageView>

<ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageButton" android:src="@android:drawable/ic_delete"
        android:background="@android:color/transparent"
        android:paddingLeft="10dp"
        android:layout_alignParentRight="true" android:layout_alignParentTop="true"/>


尝试使用
android:DegenantFocusability=“BlocksDescents”
,单击列表项时,ImageButton会消耗焦点。

尝试使用
android:DegenantFocusability=“BlocksDescents”
,单击列表项时,ImageButton会消耗焦点。

尝试使用
android:DegenantFocusability=“BlocksDescents>=“BlocksDescents”
,单击列表项时,ImageButton会消耗焦点。

尝试使用
android:DegenantFocusability=“BlocksDescents”
,单击列表项时,ImageButton会消耗焦点。

使用imageView而不是ImageButton,它将运行

[这个问题的解决办法是:

不要在网格中使用可点击的对象。这种情况下Android无法处理网格的点击事件

相反,使用一些东西来显示类似的用户界面视图。而不是处理对象单击操作

false;将按钮置于网格中以执行某些单击操作

true;放置imageview而不是imagebutton,并处理imageview的单击事件。]

把这些

          android:focusable="false"
          android:focusableInTouchMode="false" 

到您的ImageButton。

使用imageView而不是ImageButton,它将运行

[这个问题的解决办法是:

不要在网格中使用可点击的对象。这种情况下Android无法处理网格的点击事件

相反,使用一些东西来显示类似的用户界面视图。而不是处理对象单击操作

false;将按钮置于网格中以执行某些单击操作

true;放置imageview而不是imagebutton,并处理imageview的单击事件。]

把这些

          android:focusable="false"
          android:focusableInTouchMode="false" 

到您的ImageButton。

使用imageView而不是ImageButton,它将运行

[这个问题的解决办法是:

不要在网格中使用可点击的对象。这种情况下Android无法处理网格的点击事件

相反,使用一些东西来显示类似的用户界面视图。而不是处理对象单击操作

false;将按钮置于网格中以执行某些单击操作

true;放置imageview而不是imagebutton,并处理imageview的单击事件。]

把这些

          android:focusable="false"
          android:focusableInTouchMode="false" 

到您的ImageButton。

使用imageView而不是ImageButton,它将运行

[这个问题的解决办法是:

不要在网格中使用可点击的对象。这种情况下Android无法处理网格的点击事件

相反,使用一些东西来显示类似的用户界面视图。而不是处理对象单击操作

错误;将按钮放入网格中以执行