如何将 View 参数(TextView)从 OnClickListener 传递给公共方法
Posted
技术标签:
【中文标题】如何将 View 参数(TextView)从 OnClickListener 传递给公共方法【英文标题】:How can I pass View parameter (TextView) from OnClickListener to public methode 【发布时间】:2016-07-12 18:48:41 【问题描述】:我正在尝试对不同的视图使用相同的方法。每次,我都想传递一个不同的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()
。
我怎样才能让它工作?
【问题讨论】:
【参考方案1】:通过将视图传递给increase()
方法作为 TextView,它可能会为您省去不断向下转换的麻烦。 (即 - 调用increase((TextView)view);
)
让你的增加方法接受 TextView 而不是你现在拥有的 View。
public void increase (TextView textView )
...
【讨论】:
我的观点是一个类级别的变量,很抱歉没有将它包含在问题中。我想传递每个视图,以便方法对传递的视图起作用 @ProBul 重写了我的答案,它借鉴了 sush 的答案【参考方案2】:试试下面的代码
try
String counter = ((TextView)textView ).getText().toString();
calculatedValue = Integer.parseInt(counter) + 1;
((TextView)textView ).setText(String.valueOf(calculatedValue));
catch (Exception e)
e.printStackTrace();
【讨论】:
【参考方案3】: 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
【讨论】:
以上是关于如何将 View 参数(TextView)从 OnClickListener 传递给公共方法的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI 将数据从 Firebase 加载到 TextView
如何使用 ajax get 将数据从 View 传递到 Controller 或使用参数在 mvc 中发布