如何在OnClick View事件中增加计数器

4

我知道这可能听起来很基础,但这是我的问题:

我有一个onclick事件监听器,当它被点击时应该无限制地增加计数器:

final int counter = 0;
myimageView2.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        counter ++;
    }
});

问题在于,除非将计数器设置为final,否则我似乎无法从onclick事件中调用计数器。但是,由于它是final,我也无法更改它的值。
我尝试将计数器放置在onclick事件内部,即:
myimageView2.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        int counter = 0;
        counter ++;
    }
});

然而,点击它也会将计数器重置为零。

我该怎么解决这个问题?我想每次点击时都不断增加计数器,但是除非它是最终的,否则我无法在onclick之外定义计数器,这意味着我不能再增加它。 我也不能在onclick内部定义计数器,因为每次点击它都会重置其值。


可能是重复的问题:在 OnClickListener 中我无法访问很多东西 - 如何处理? - Nikola Smiljanić
3个回答

14

已解决:

myimageView2.setOnClickListener(new OnClickListener() {
    int counter = 0;
    public void onClick(View v) {
        counter ++;
    }
});

2
请考虑点击旁边的“勾”或“对号”图标,将此答案标记为“已接受”。 - Alfred

1
你可以在Activity的oncreate方法外声明'counter'。

0
    t.setOnClickListener(new View.OnClickListener() {
        int Counter = 0;
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), R.string.hey, Toast.LENGTH_SHORT).show();
            t.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
            c.setBackgroundColor(getResources().getColor(R.color.colorAccent));
            p.setVisibility(View.VISIBLE);
            if (Counter >= 0) {
                Counter++;
                e.setText("you clicked Click me "+Counter +"number of times");
                e.setTextSize(15);
                e.setTextColor(getResources().getColor(R.color.colorPrimary));
                e.setSingleLine();
            }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接