0

我在 ListView 对象中有一个大约 2500 个项目的列表。我希望其中一些项目可见,但显示为灰色。为未显示为灰色的活动启动(在我的情况下,这是一个 AlertDialog)。我希望(例如)前 500 个项目处于活动状态并具有通常的行为,而其他项目显示为灰色并且单击它们没有任何作用。

我要创建的是 ListView 应用程序的试用版,以便用户出于演示目的只能访问列表中的某些项目。

解决这个问题的最简单方法是什么?我只能想到有两个相互附加的列表(第一个是活动的,第二个不是)。理想情况下,我实际上会有叉指列表,这样(例如)每三个项目都处于活动状态,而其他项目则不是,但如果这太复杂的话,我会满足于在同一个列表上运行的两个单独的组。

4

1 回答 1

0

只需扩展您正在使用的任何适配器并添加这个简单的签入getView()

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = super.getView(position, convertView, parent);

    if(position < 500) {
        view.setClickable(false);
        view.setEnabled(true);
    }
    else {
        view.setClickable(true);
        view.setEnabled(false);
    }

    return view;
}

我做了你的简单检查(如果该行在前 500 行中),然后更改了几个特征。

  • setEnabled()当它是 时将文本变为灰色false
  • setClickable()true这阻止 ListView 接收 TouchEvent 时。

希望有帮助!

于 2012-09-06T00:08:54.177 回答