2012-08-13 37 views
6

我一直在遭受一個問題,因爲2天。我有一個網格視圖,因爲我需要顯示圖像。當我點擊網格物品時,它必須去下一個activity.I能夠在GridView中顯示圖像,但事情是當我點擊該項目沒有響應..(OnItemClickListener不工作)。我無法追查我的問題,我做錯了。GridView.setOnItemClickListener無法正常工作

  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; 

} 

    } 

這是我的適配器。

如果你們know.Canü請告訴我...

感謝, 切塔尼亞

回答

24

我覺得你ImageViews偷焦點,因爲他們是勾選的。所以項目點擊不會發生,因爲你的ImageViews攔截它。

將這些屬性添加到您的圖像查看可能會有所幫助,但可能會麻煩您的檢查。

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

讓列表視圖中的可檢查的項目有點痛苦。但我想你會找到相關的主題如何去做。

這裏是1個教程,似乎合適的,我承認我沒有扔仔細一看就可以了,但是你可能想:

http://windrealm.org/tutorials/android/listview-with-checkboxes-without-listactivity.php

+3

感謝Konstantin..Thank你這麼much..It工作了me..Added這些道具都imageview的並且複選框,然後僅是工作。 – Chaitu 2012-08-13 10:15:17

+0

我很高興! :) – Ostkontentitan 2012-08-13 10:29:48

+0

我已經以編程方式在線性佈局中添加了圖像視圖和複選框。所以我通過java代碼做了以上兩行。但是,我仍然無法收到任何點擊項目。 – Namratha 2013-02-05 09:33:30

1

希望這可以幫助別人, 在GridView中,如果添加按鈕或在其中的元素中設置「android:clickable = true」,gridview的OnItemClickListener將不會被監聽,您可以使用圖像創建一個Image或TextView,並確定您沒有設置clickable =「true」。現在,OnItemClickListener將會聽取TextView,這對我很有用。