2012-08-13 3 views
6

が動作していませんグリッドビューでイメージを表示しますが、そのアイテムをクリックすると応答しません。(OnItemClickListenerは機能しません)。私が間違ったところで問題をトレースできませんでした。GridView.setOnItemClickListener 2days.Iが、私はそれが次のactivity.Iに行くために持っているグリッド項目をクリックimages.When表示する必要があることが可能だという点で、グリッドビューを持っているので、私は一つの問題で悩まされている

  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; 

} 

    } 

は、これは私のアダプタ..です私の断片です。

君たちは、uは、彼らがチェック可能ですので、私はあなたのImageViewsがフォーカスを盗んだと思う...

おかげで、 Chaitanya

答えて

24

を教えてくださいknow.Can場合。あなたのImageViewsがそれを傍受しているので、アイテムのクリックは起こらない。

これらの属性を画像ビューに追加すると、問題が解決しない可能性があります。

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

リストビューでチェック可能な項目を持つことは苦痛です。しかし、私はあなたがそれを行う方法を関連するトピックを見つけるだろうと思う。ここで

は適しているようだ1つのチュートリアルがあり、私はそれに近い外観を投げたが、あなたがしたい場合がありますdidntの認める:あなたが追加した場合、これは、GridViewのは誰か、 を助けるかもしれ

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

+3

ためにスローされることはありませんおかげで、あなたがそうmuch..Itはその後、唯一それが働いているImageViewのチェックボックスの両方にme..Addedそれらの小道具のために働いKonstantin..Thank 。 – Chaitu

+0

私はそれについて嬉しいです! :) – Ostkontentitan

+0

イメージビューとチェックボックスを線形レイアウトでプログラムで追加しました。だから、私は上記の2行をjavaコードでやっています。しかし、まだ私はクリックアイテムを受け取ることができません。 – Namratha

1

・ホープグリッドビューのOnItemClickListenerはリッスンされず、ImageまたはTextViewをイメージで作成し、clickable = "true"を設定していないことを確認することができます。今、OnItemClickListenerはTextViewをリッスンし、これは私のために働いた。

2

また、あなたのアダプタがISENABLED

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

http://developer.android.com/reference/android/widget/BaseAdapter.html#isEnabled(int)

ISENABLED(int型の位置)がtrueを返すことを、確認して指定された 位置の項目がセパレーターでない場合はtrueを返します。

そうでない場合は、クリックイベントは、あなたの商品