2015-11-26 100 views
2
gridView.setOnItemClickListener (new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick (AdapterView<?> parent, View view, int position, long id) { 

      ViewFlipper viewFlipper= (ViewFlipper)view.findViewById (R.id.viewFlipper); 
      view.setEnabled (false); 
      view.setClickable (false); 
      choose (viewFlipper, position); 


     } 
    }); 

想禁用已經點擊的項目不能再次點擊,直到我設置,如果可以再次點擊。我使用上面的方法,但該項目仍然可以點擊。希望有人能夠幫助我,以便在我點擊一次後禁用它。Android禁用點擊Gridview上的特定項目

解決方案: 感謝Androider,修改了一下,然後得到我想要的。 在適配器上創建一個ArrayList,並在表上添加true。

// put inside the Adapter 
ArrayList<Boolean> itemClickable =new ArrayList<Boolean>(); 

    @Override 
public boolean isEnabled (int position) { 
    return itemClickable.get (position); 

} 

public void setItemClickable(int position,Boolean typeValue){ 
    itemClickable.add (position,typeValue); 
} 


//put inside OnCreate /Constructor 
for(int j=0;j<picturePath.length;j++){ 
     itemClickable.add (true); 
    } 

回答

2

在適配器中做到這一點:

@Override 
public boolean areAllItemsEnabled() { 
    return false; 
} 

@Override 
public boolean isEnabled(int position) { 
    // according to position return here true or false to enable or disable respectively 
    return false; 
} 

更多的檢查:http://developer.android.com/reference/android/widget/BaseAdapter.html#isEnabled(int) http://developer.android.com/reference/android/widget/ListAdapter.html#areAllItemsEnabled()

+0

我能做些什麼,以重新啓用?禁用它之後。 – kyorilys

+0

嘗試返回true,同時檢查我的更新答案鏈接,並嘗試,他們會爲你工作,謝謝 – Androider

+0

你解決了你的問題嗎? – Androider

1
// put inside the Adapter 
ArrayList<Boolean> itemClickable =new ArrayList<Boolean>(); 

    @Override 
public boolean isEnabled (int position) { 
    return itemClickable.get (position); 

} 

public void setItemClickable(int position,Boolean typeValue){ 
    itemClickable.add (position,typeValue); 
} 


//put inside OnCreate /Constructor 
for(int j=0;j<picturePath.length;j++){ 
     itemClickable.add (true); 
    } 

// you can disable grid item using 
adapter.setItemClickable(position,false); 



    enter code here 

//// add grid item click listener//////// 

    gridView.setOnItemClickListener (new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick (AdapterView<?> parent, View view, int position, long id) 
      boolean isEnable=adapter.isEnabled(position) 
      if(isEnable){ 
       // write your action here 
       } 

     } 
    }); 
相關問題