2013-07-12 67 views
-1

我创建了一个项目,其中列表视图中有20个项目,其中我想禁用15个项目,除非它们被购买,并且只要购买它们就会变得可点击,我试过了验证码:禁用列表视图中项目的可点击属性

setListAdapter(new ArrayAdapter<String>(QuantitativeAptitude.this, 
      R.layout.row, quantList){ 

     @Override 
     public boolean isEnabled(int position) { 
      ListView lv = getListView(); 
       for (int i = 5; i <=20; i++){ 
        View v = lv.getChildAt(i); 
        v.setEnabled(false); 
       } 
      return super.isEnabled(position); 
     } 

    }); 

,但它不会帮助,而不是崩溃我的应用程序有任何建议.....

回答

2

我相信你可能要重写的IsEnabled方法,并在那里你可以指定某个条件它是否启用。这种方法被称为用于集合中的每个ListViewItem的,因此,例如:

@Override 
public boolean isEnabled(int position) { 
    if(CONDITION_GOES_HERE){ 
     return false; 
    } 
    return true; 
} 

有可能做的更好/更简单的方法,但是这是我想到的第一件事。

希望这将帮助你:)

+0

thanx您rply但在我的代码我已经通过使用循环,任何其他有用的答案使用的IsEnabled方法... –

+0

我明白,但你获取isEnabled方法中所有listviewitems的列表,这是您不需要的。为每个为其父容器创建的listviewitem调用此方法。如果你删除了所有的代码,并简单地使用我提供的代码,我想你会发现它会按照你的意愿工作。至少我相信是这样。因为这是在单个项目上调用的,所以不需要循环。 – LokiSinclair

+0

你能告诉我一个isEnabled(int position)方法实现的例子,因为我没有得到如何将它应用于15个项目,并再次将它们转换回可点击状态 –