2012-08-13 1 views
6

2days.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; 

} 

    } 

이 내 어댑터입니다 .. 내 조각이다. 너희들이 유 ...

감사를 말씀 해주십시오 알죠 경우

는 Chaitanya

답변

24

나는 그들이 확인 가능하기 때문에 당신의 ImageViews가 초점을 훔치는 생각합니다. 따라서 항목을 클릭하면 ImageView가이를 가로 채기 때문에 클릭이 발생하지 않습니다.

이러한 속성을 이미지 뷰에 추가하면 도움이 될 수 있지만 문제가 될 수 있습니다.

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

목록보기에 체크 가능한 항목이있는 것은 약간의 고통입니다. 그러나 나는 당신이 그것을하는 방법을 관련 주제를 찾을 것 같아요. 당신이 추가 할 경우,이있는 gridview에서 을 사람을 도움이 될 수

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

+3

감사합니다 당신을 Konstantin..Thank 귀하의 항목 만이 작동을 클릭 이벤트 던져되지 않습니다 . – Chaitu

+0

나는 그것에 대해 기쁩니다! :) – Ostkontentitan

+0

선형 뷰 레이아웃과 이미지 뷰를 프로그래밍 방식으로 추가했습니다. 그래서 위의 2 줄 java 코드를 통해 일을 해요. 하지만 여전히 클릭 항목을받을 수 없습니다. – Namratha

1

희망 : 여기

적절한 것 같다 (1) 튜토리얼, 나는 거기에 면밀한 관찰을 던졌다 didnt한다 인정하지만, 당신은 할 수 있습니다입니다 버튼을 누르거나 "android : clickable = true"를 설정하면 gridview의 OnItemClickListener가 수신되지 않고 Image 또는 TextView와 이미지를 만들고 clickable = "true"로 설정하지 않은 것을 볼 수 있습니다. 이제, OnItemClickListener는 TextView를 듣고 이것이 나를 위해 일했습니다.

2

또한 어댑터가 지정된 위치에있는 항목이 분리되지 않은 경우에 true를 돌려의 IsEnabled

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

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

의 IsEnabled (INT 위치)에 대해 true를 반환, 확인하십시오.

그렇지 않으면, much..It는 이미지 뷰 다음 확인란을 모두 me..Added에 대한 그 소품을했다, 그래서