Java -Listen用于不同类中的变量

时间:2017-12-01 10:04:59

标签: java android

适用于使用Android Studio的Android应用。

我有一个听,并处理RFID阅读器事件的课程。 这是与活动相关联的单独类。 RFID EPC正在处理RFID事件的类中读取,但我想在UI上显示此EPC,但我不知道如何实现这一点。

我尝试过实现ValueSubmittedListener,但不确定如何将它们全部绑定在一起以使其工作:

我拥有的是

public class ReadMemoryActivity extends Activity implements 
    View.OnClickListener, ValueSubmittedListener
{
    private TextView txtSelection = (TextView) findViewById(R.id.selection);//where EPC is to be displayed

    public void onSubmitted(String epc)
    {
       txtSelection.setText(epc);
    }

然后是活动的课程

public class BaseReadAction  implements RfidReaderEventListener 
{
    private List<ValueSubmittedListener> epcListener = new 
    ArrayList<ValueSubmittedListener>();

    public void addListener(ValueSubmittedListener epc)
    {
        epcListener.clear();
        epcListener.add(epc);
    }

    private void notifyListeners()
    {
        for(ValueSubmittedListener epc : epcListener)
        {
            epc.onSubmitted(getSelection());
        }
    }

    public void setSelection(String epc) {

        setEPC = epc;
        notifyListeners();

    }

我看到那里有不少听众。看看TextWatcher也是如此,但是看起来它看起来像是一个TextView而不仅仅是一个字符串变量。我对Android dev和Java一般都是新手,所以我的知识远远不能满足于什么。

2 个答案:

答案 0 :(得分:0)

  1. 应该是EditText而不是TextView,不是吗?

  2. Textwatcher可以做很多事情:

  3. 代码:

    txtSelection.addTextChangedListener(new TextWatcher() {
    
       @Override
       public void afterTextChanged(Editable s) {}
    
       @Override    
       public void beforeTextChanged(CharSequence s, int start,
         int count, int after) {
       }
    
       @Override    
       public void onTextChanged(CharSequence s, int start,
         int before, int count) {
       }
      });
    

答案 1 :(得分:0)

所以这就是我最终要做的就是让它发挥作用。 这是一个答案,可能不是最好的答案,当然不是唯一的答案,但在这里......

在baseClass中添加了以下内容

public class BaseReadAction extends Activity  implements 
RfidReaderEventListener {

  private String epcNo;
  private ChangeListener listener;

 public String getEpcNo()
 {
     return epcNo;
 }

 public void setEpcNo(String epc)
 {
     this.epcNo = epc;
     if(listener != null) listener.onChange();
 }

 public ChangeListener getListener() {
     return listener;
 }

 public void setListener(ChangeListener listener) {
     this.listener = listener;
 }


 public interface ChangeListener
 {
     void onChange();
 }
}

然后在触发扫描的key_Down事件的UI类中我把它放了。

   // listens for event when epc is assigned to variable (ReadAction is an instance of BaseReadAction class
            ReadAction.setListener(new BaseReadAction.ChangeListener(){
            @Override
            public void onChange()
            {
                txtSelection.setText(ReadAction.getEpcNo());//sets the read value to the textView
            }