2015-11-26 40 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 
       } 

     } 
    }); 
相关问题