2014-04-07 111 views
1

我有一个要求,其中我想禁用列表视图中的项目。 说例如,我在列表视图中有5个项目,其中我只想启用1个项目。禁用列表视图中的项目

注意:禁用意味着灰色的项目。

以下是我的代码:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(activity,android.R.layout.simple_list_item_1, movies); 

我不想用自定义适配器去,其中我们得到了getView()

是否有任何其他方式来实现此功能?

+2

按照乌拉圭回合的要求u必须使自定义adapter.I认为没有其他选择。 – TheFlash

+0

不可能没有自定义适配器.. –

+0

如果扩展ArrayAdapter而不是BaseAdapter(或ListAdapter接口),则只需实现isEnabled方法,因为getView和其他必需的方法将由父级(ArrayAdapter)实现, – stan0

回答

1

在适配器中有一个方法名称isEnabled您可以覆盖这就像getview中的每一行一样。仅当此函数返回true时,才会触发onclicklistener。所以请试试您的自定义适配器

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

没有调整:

然后,你需要通过在特定位置获得以禁用该项目。

+1

是的,但anuja写道,他/她不想实现自定义适配器。 – stan0

0

请实施此方法的监听器setOnItemSelectedListener。所以你可以禁用任何你想要的物品。

+0

我不想禁用任何项目,点击项目。当列表视图被创建时,它应该有4个项目被禁用 –

0

您也可以使用禁用物品:

final Set<Integer> disabledPositions = new HashSet<Integer>(); 
disabledPositions.add(positionYouWantToDisable); 
disabledPositions.add(positionYouWantToDisable); 
disabledPositions.add(positionYouWantToDisable); 

ListView listView = new ListView(this); 
listView.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapter, View view, int position, long arg3) { 
     if(!disabledPositions.contains(position) { 
     // do what you want 
     } 
    } 
}); 
+0

我试过这个..但不幸的是它不工作 –

+0

@anuja - 我编辑了我的答案。 – Ziem

+0

getChildAt()返回我null –

0

试试这个:

final List<Integer> disabledItems = new ArrayList<Integer>(); 
    disabledItems.add(0); 
    disabledItems.add(2); 
    lvMovies.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
      if (disabledItems.contains(arg2)) { 
       Toast.makeText(getApplicationContext(), "DISABLED", Toast.LENGTH_SHORT).show(); 
       arg1.setEnabled(false); 
      } else { 
       Toast.makeText(getApplicationContext(), "NOT DISABLED", Toast.LENGTH_SHORT).show(); 
       arg1.setEnabled(true); 
      } 
     } 
    });