Android GridView.setOnItemClickListener不工作

Android GridView.setOnItemClickListener不工作,android,gridview,android-adapterview,Android,Gridview,Android Adapterview,自2天以来,我一直有一个问题。我有一个网格视图,需要显示图像。当我单击网格项目时,它必须转到下一个活动。我可以在网格视图中显示图像,但问题是当我单击该项目时,它没有响应..(OnItemClickListener不工作)1.我无法找出我的问题出在哪里 package com.logictreeit.mobilezop.fragments; import android.app.Activity; import android.content.Context

自2天以来,我一直有一个问题。我有一个网格视图,需要显示图像。当我单击网格项目时,它必须转到下一个活动。我可以在网格视图中显示图像,但问题是当我单击该项目时,它没有响应..(OnItemClickListener不工作)1.我无法找出我的问题出在哪里

         package com.logictreeit.mobilezop.fragments;

     import android.app.Activity;
     import android.content.Context;
     import android.os.Bundle;
     import android.support.v4.app.Fragment;
     import android.util.Log;
     import android.view.LayoutInflater;
     import android.view.View;
     import android.view.ViewGroup;
     import android.widget.AdapterView;
     import android.widget.AdapterView.OnItemClickListener;
     import android.widget.GridView;

     import com.logictreeit.mobilezop.adapters.PhotoAdapter;
     import com.logictreeit.mobilezop.custom.Utils;

      public class Dup_AlbumPhotosFragment extends Fragment implements
                OnItemClickListener {

private static final String TAG = "AlbumPhotos Fragment";
private GridView gridView;
private Context mContext;
private PhotoAdapter photoAdapter;

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Log.v(TAG, "on Activity Created ");

}

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

public void onAttach(Activity activity) {
    super.onAttach(activity);
    this.mContext = activity;
}

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    Log.v(TAG, "OnCreateView");
    gridView = new GridView(mContext);
    gridView.setNumColumns(GridView.AUTO_FIT);
    gridView.setClickable(true);
    gridView.setOnItemClickListener(this);
    photoAdapter = new PhotoAdapter(mContext,                   -1,Utils.getALbumList().get(0).getPhotosList());
    gridView.setAdapter(photoAdapter);
    return gridView;
}

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    Log.v(TAG, "on ItemClikced");

}

       }
package com.logictreeit.mobilezop.fragments;
导入android.app.Activity;
导入android.content.Context;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.GridView;
导入com.logictreeit.mobilezop.adapters.PhotoAdapter;
导入com.logictreeit.mobilezop.custom.Utils;
公共类Dup_片段扩展了片段实现
麦克利克监听器{
私有静态最终字符串TAG=“AlbumPhotos片段”;
私有GridView GridView;
私有上下文;
专用光适配器;
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
Log.v(标记“创建活动时”);
}
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
公共事务主任(活动){
超级转速计(活动);
this.mContext=活动;
}
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
Log.v(标记“OnCreateView”);
gridView=新的gridView(mContext);
gridView.setNumColumns(gridView.AUTO_-FIT);
gridView.setClickable(真);
setOnItemClickListener(this);
photoAdapter=新的photoAdapter(mContext,-1,Utils.getALbumList().get(0.getPhotosList());
setAdapter(photoAdapter);
返回gridView;
}
@凌驾
公共视图单击(AdapterView arg0、视图arg1、整型arg2、长型arg3){
Log.v(标签“on ItemClikced”);
}
}
这是我的片段

         package com.logictreeit.mobilezop.adapters;

        import java.util.List;

         import android.content.Context;
         import android.view.LayoutInflater;
         import android.view.View;
         import android.view.ViewGroup;
         import android.widget.ArrayAdapter;
         import android.widget.CheckBox;
         import android.widget.CompoundButton;
         import android.widget.CompoundButton.OnCheckedChangeListener;
         import android.widget.ImageView;

        import com.logictreeit.mobilezop.R;
        import com.logictreeit.mobilezop.models.Photo;

            public class DupPhotoAdapter extends ArrayAdapter<Photo> {
            private static final String TAG = "PhotoAdapter";
            private Context context;
private List<Photo> photoList;

public DupPhotoAdapter(Context context, int textViewResourceId,
        List<Photo> objects) {
    super(context, textViewResourceId, objects);
    this.context = context;
    this.photoList = objects;
}

public int getCount() {
    return photoList.size();
}

public View getView(int position, View convertView, ViewGroup parent) {
    convertView = LayoutInflater.from(context).inflate(
            R.layout.grid_item_image_layout, null);

    ImageView imageView = (ImageView) convertView
            .findViewById(R.id.grid_item_imageview);
    final CheckBox checkBox = (CheckBox) convertView
            .findViewById(R.id.grid_item_checkbox);
    final Photo photo = photoList.get(position);

    if (photo.isSelected()) {
        checkBox.setChecked(true);
    } else {
        checkBox.setChecked(false);
    }
    imageView.setImageResource(Integer.parseInt(photo.getFileUrl()));
    checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            if (isChecked) {
                photo.setSelected(true);
            } else {
                photo.setSelected(false);
            }

        }
    });
    return convertView;

}

     } 
包com.logictreeit.mobilezop.adapters;
导入java.util.List;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.CheckBox;
导入android.widget.CompoundButton;
导入android.widget.CompoundButton.OnCheckedChangeListener;
导入android.widget.ImageView;
导入com.logictreeit.mobilezop.R;
导入com.logictreeit.mobilezop.models.Photo;
公共类DupPhotoAdapter扩展了ArrayAdapter{
专用静态最终字符串标记=“PhotoAdapter”;
私人语境;
私人列表照片列表;
公共DupPhotoAdapter(上下文上下文,int textViewResourceId,
列出对象){
超级(上下文、textViewResourceId、对象);
this.context=上下文;
this.photoList=对象;
}
public int getCount(){
返回photoList.size();
}
公共视图getView(int位置、视图转换视图、视图组父视图){
convertView=LayoutFlater.from(上下文)。充气(
R.layout.grid\u item\u image\u layout,空);
ImageView ImageView=(ImageView)convertView
.findViewById(R.id.grid\u item\u imageview);
最终复选框复选框=(复选框)convertView
.findViewById(R.id.grid\u item\u复选框);
最终照片=照片列表。获取(位置);
if(photo.isSelected()){
checkBox.setChecked(true);
}否则{
checkBox.setChecked(false);
}
setImageResource(Integer.parseInt(photo.getFileUrl());
setOnCheckedChangeListener(新的OnCheckedChangeListener(){
检查更改后的公共无效(复合按钮视图,
布尔值(已检查){
如果(已检查){
照片.已选定(真实);
}否则{
照片.已选(假);
}
}
});
返回视图;
}
} 
这是我的适配器

如果你们知道的话,能告诉我

谢谢,
柴坦尼亚

我认为你的图像视图窃取了焦点,因为它们是可检查的。因此,项目单击不会发生,因为您的ImageView会拦截它

将这些属性添加到ImageView可能会有所帮助,但可能会给检查带来麻烦

    android:focusable="false"
    android:focusableInTouchMode="false"
在listview中拥有可检查的项目有点痛苦。但我想你会找到相关的话题如何做到这一点

这里有一个似乎合适的教程,我承认我没有仔细看,但你可能想:


希望这能帮助到别人,
在gridview中,如果您在其中的元素中添加按钮或设置“android:clickable=true”,gridview的OnItemClickListener将不会被监听,相反,您可以使用Image创建图像或TextView,并确保您没有设置clickable=“true”。现在,OnItemClickListener将侦听TextView,这对我很有用。

还要确保您的适配器为isEnabled返回true

@Override
     public boolean isEnabled(int i) {
     return true;
}

如果项位于指定的位置,则isEnabled(int位置)返回true 位置不是分隔符


否则,将不会为您的项目抛出单击事件

谢谢Konstantin..非常感谢..它对我起了作用..为imageview和checkbox添加了这些道具,然后只有它起作用。我已通过编程方式在线性布局中添加了图像视图和checkbox。因此,我通过java代码完成上述两行代码。但是,我仍然无法接收任何单击项目。我有一个网格视图,每个项目都是线性布局,在这种情况下,不会接收到单击事件,但如果项目是图像,则会接收到单击事件,知道如何解决此问题吗