如何将 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 传递给公共方法的主要内容,如果未能解决你的问题,请参考以下文章

将 textView 渲染到 View 上

SwiftUI 将数据从 Firebase 加载到 TextView

当$(文件).on时向函数发送参数

如何使用 ajax get 将数据从 View 传递到 Controller 或使用参数在 mvc 中发布

如何在不使用自定义适配器的情况下从 ListView 获取特定的 TextView (View)?

在 ruby​​ on rails 中将参数从视图传递到控制器