Java -LISTEN,用于不同类别的可变变化



这是使用Android Studio的Android应用程序。

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

我曾尝试实现valuesubsittedListener,但不确定如何将它们绑定在一起以使其起作用:

我拥有的是

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,但乍一看,它看起来比字符串变量更重要。总的来说,我仍然是Android Dev和Java的新手

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

  2. TextWatcher可以做很多事情:

代码:

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) {
   }
  });

,所以这是我最终为使它工作而做的。这是一个答案,可能不是最好的答案,当然不是唯一的答案,但这是...

在基础上,我添加了以下

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
            }

最新更新