0

在此处输入图像描述

基本上我想要当我取消选中第一项上的框时,第二项是“灰色的”并且不可点击或禁用。

@Override
    public void onItemClick(AdapterView<?> parent, View view, int position,  long id) {


        if(position == 0) { 
            //disable.enable push
            CheckBox checkBox = (CheckBox) mRoot.findViewById(R.id.cbRowCheckBox);
            checkBox.setChecked(!checkBox.isChecked());

            mPushEnabled = checkBox.isChecked();

            if (mPushEnabled) {
                //code for push enabled
                //code to let position 1 enabled, i was thinking something along th e lines,
               adapter.getposition(1).setEnabled(true);
            } else {
                //code for push disabled
                adapter.getposition(1).setEnabled(false);
            }
        } else if(position == 1) {
            //push notification settings
            //open intent
        }
    }

我在想我可以得到项目所在的位置,然后将其设置为 false setEnabled()。那是正确的方法吗?如果是这样,我不知道如何定位该项目。如果现在,最好的方法是什么?

4

2 回答 2

0

基本上我希望当我取消选中第一项上的框时,第二项是“灰色的”并且不可点击或禁用。

当您在下一行CheckBox的适配器级别检查该存储时,将被禁用并调用.positionnotifyDataSetChanged()

在适配器中,首先覆盖该isEnabled()方法并使其返回false,如果位置参数与先前存储的禁用行位置匹配(并且对于任何其他位置为真)。这将使该行不可点击。

然后在getView()方法中检查当前位置是否是禁用行的位置并使其看起来褪色或您想要的其他方式。

于 2013-07-23T17:04:25.417 回答
0

究竟是getposition做什么的?

我认为您不能直接从适配器获取视图,因为它们经常被 listView 重用。

我认为最好的方法是跟踪您想要启用的项目位置,并从适配器中的 getView() 或 bindView() 方法相应地更新视图。

于 2013-07-23T16:16:34.300 回答