如何将View参数(TextView)从OnClickListener传递到公共方法

时间:2016-07-12 18:48:42

标签: java android view textview

我尝试对不同的视图使用相同的方法。每次,我想传递一个不同的TextView来使用,如下所示:

 ibIncreaseA.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //increase the counter in textView
            increase(view);
        }
    });

ibIncreaseB.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        //increase the counter in textView
        increase(view);
    }
});

这是理想的方法:

public void increase (View textView ){
    int calculatedValue;
    try {
        String counter = textView.getText().toString();
        calculatedValue = Integer.parseInt(counter) + 1;
        tvNumOfTickets.setText(String.valueOf(calculatedValue));
    }catch (Exception e){
        e.printStackTrace();
    }
}

我的问题是方法中的textView不允许我使用.setText()

我怎样才能让它发挥作用?

3 个答案:

答案 0 :(得分:0)

通过将View作为一个TextView传递给increase()方法,它可以为您节省持续向下转换的麻烦。 (即 - 呼叫increase((TextView)view);

让你的增加方法接受TextView而不是现在的视图。

public void increase (TextView textView ){
    ...
}

答案 1 :(得分:-1)

尝试以下代码

try {
    String counter = ((TextView)textView ).getText().toString();
    calculatedValue = Integer.parseInt(counter) + 1;
    ((TextView)textView ).setText(String.valueOf(calculatedValue));
}catch (Exception e){
    e.printStackTrace();
}

答案 2 :(得分:-1)

 wallet2 = (Button)findViewById( R.id.wallet2 ) ;
//enter code here

 wallet3 = (Button)findViewById( R.id.wallet3 );
//enter code here

 walletlis(wallet2);
//enter code here

 walletlis(wallet3);
//enter code here

public void walletlis(Button wallet)
{     
  wallet.setOnClickListener(new View.OnClickListener()
  { 
     //enter code here
   public void onClick(View view)
   { });
  }
}

//enter code here