我从2days开始遇到一个问题.我有一个网格视图,我需要显示图像.当我点击网格项时,它必须转到下一个活动.我能够在gridview中显示图像但事情是什么时候我点击它没有响应的项目..(OnItemClickListener不工作).我无法在我做错的地方追踪我的问题.
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.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; } }
这是我的适配器.
如果你们都知道的话.请你告诉我……
谢谢,
切塔尼亚
解决方法
我认为你的ImageViews偷了Focus,因为它们是可检查的.所以项目点击不会发生,因为你的ImageViews拦截它.
将这些属性添加到您的imageview可能会有所帮助,但可能会给您的检查带来麻烦.
android:focusable="false" android:focusableInTouchMode="false"
列表视图中的可检查项目有点痛苦.但我认为你会找到相关的主题如何做到这一点.
这是一个看起来合适的教程,我承认我没有仔细观察它,但你可能想:
http://windrealm.org/tutorials/android/listview-with-checkboxes-without-listactivity.php