2014-04-07 110 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); 
      } 
     } 
    });