TextView值在最后N秒内更改

时间:2018-05-15 10:51:39

标签: android textview

如果TextView中的值在最近2秒内没有改变,如何检查Android。

我有一个条件,当我的应用程序从蓝牙接收数据时,TextView中的值会不断变化。

我必须检查数据何时停止,所以基于此,我可以更新我的UI。

以下是我处理文字视图的代码

 textOngoingBP.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
       Logger.log(Level.DEBUG,TAG, --OnText CHanged");
    }

    @Override
    public void afterTextChanged(Editable editable) {
       // startTest and stopTest is button for start test                                                
       startTest.setVisibility(View.GONE);
       stopTest.setVisibility(View.VISIBLE);
       Logger.log(Level.DEBUG,TAG,"--AfterText Changed");
    }
});

这里我必须使开始按钮可见,并且当没有数据到来时停止按钮消失。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

每次编辑TextView时,您都可以使用计时器并重置计时器。

试试这个:

Timer timer = new Timer();

//timer.schedule(new MyTask(),2000);

class MyTask extends TimerTask {
        public void run() {
            Log.i("TAG","2 seconds.");            
        }
    }


textOngoingBP.addTextChangedListener(new TextWatcher() {
     @Override
     public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

     }

     @Override
     public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
         //timer.cancel();
         //timer = new Timer();
         //timer.schedule(new MyTask(),2000);  
         Logger.log(Level.DEBUG,TAG, --OnText CHanged");                                     
    }

     @Override
     public void afterTextChanged(Editable editable) {

         timer.schedule(new MyTask(),2000);                                             
    startTest.setVisibility(View.GONE);
    stopTest.setVisibility(View.VISIBLE);                                                               
    Logger.log(Level.DEBUG,TAG,"--AfterText CHanged");
           }
          }
        );

答案 1 :(得分:0)

你可以拥有这样的东西,节省了上次更新的时间。

import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;

/**
 * This class was created by Anthony M Cannon on 15/05/2018.
 */
public class ChangingTextView extends android.support.v7.widget.AppCompatTextView {

    private long lastUpdated = -1;

    public ChangingTextView(Context context) {
        super(context);
    }

    public ChangingTextView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public ChangingTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public void setText(CharSequence text, BufferType type) {
        lastUpdated = System.currentTimeMillis();
        super.setText(text, type);
    }

    public long getLastUpdated() {
        return lastUpdated;
    }
}

然后你可以有一个后台线程,经常检查它。