禁用列表视图中的项目

时间:2014-04-07 11:13:03

标签: android android-listview

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

注意:禁用意味着使项目变灰。

以下是我的代码:

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

我不想使用我们获得getView()的自定义适配器。

有没有其他方法可以实现此功能?

4 个答案:

答案 0 :(得分:1)

在适配器中有一个方法名称 isEnabled ,您可以覆盖每次调用getview都会调用此方法。只有在此函数返回true时才会触发 onclicklistener 。因此,请尝试在您的自定义适配器中执行此操作。

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

没有适配器:

然后你需要通过在特定位置获取视图来禁用该项目。

答案 1 :(得分:0)

请为此方法 setOnItemSelectedListener 实施侦听器。因此,您可以禁用任何您想要的项目。

答案 2 :(得分: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
      }
   }
});

答案 3 :(得分: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);
            }
        }
    });