循环中的onClickListener第二次不工作

时间:2015-05-14 03:35:14

标签: android

为什么我的setOnClickListener只能工作一次,然后第二次工作。它不会起作用。

for(int i = 0; i < contentAndHeaderLayout.length; i++){

            String contentLayoutString = "branch"+contentAndHeaderLayout[i];
            String headerLayoutString = "header"+contentAndHeaderLayout[i];
            int branchID = getResources().getIdentifier(contentLayoutString, "id", "com.my.app");
            int headerID = getResources().getIdentifier(headerLayoutString, "id", "com.my.app");

            final LinearLayout contentLayout = (LinearLayout) root.findViewById(branchID);
            LinearLayout headerLayout = (LinearLayout) root.findViewById(headerID);

            headerLayout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    if (contentLayout.getVisibility() == View.GONE) {
                        expand(contentLayout);
                    } else {
                        collapse(contentLayout);
                    }
                }
            });
        }

我不想创建多个onClickListener,这就是我在循环中创建onClickListener的原因。希望有替代方案。

2 个答案:

答案 0 :(得分:0)

为什么不在班级中实施onClickListener,然后设置headerLayout.setOnClickListener(this);

答案 1 :(得分:0)

不使用验证并传递contentLayout,而是使用该听众的view个参数

        headerLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if (view.getVisibility() == View.GONE) {
                    expand(view);
                } else {
                    collapse(view);
                }
            }
        });