2014-01-20 29 views
1

如果我想把2编辑文本为文本表, 我该怎么说呢? 他们都链接。如何把2编辑文本为textwatch

比如如果EditText上1 + 2的EditText = .... 意思 如果我添加的EditText 1和2的EditText一起, 结局西港岛线显示它textviewer

import android.app.Activity; 
import android.os.Bundle; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    Button saveButton = null; 
    EditText dateEdit; 
    EditText priceEdit; 
    EditText pumpEdit; 
    TextView costView; 
    EditText odometerEdit; 
    TextView fconView; 
    TextWatcher textWatcher; 
    String priceEditStr ="",pumpEditStr=""; 
int result; 



    public boolean isNumeric(String str) 
    { 
     return str.matches("-?\\d+(\\.\\d+)?"); 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 




     setContentView(R.layout.activity_main); 
     Bundle bundle = getIntent().getExtras(); 
     float price = Float.parseFloat(bundle.getString("priceEdit")); 
     float pump = Float.parseFloat(bundle.getString("pumpEdit")); 

     costView = (TextView)findViewById(R.id.tcost); 
     dateEdit = (EditText)findViewById(R.id.date); 
     priceEdit = (EditText)findViewById(R.id.fuelprice); 
     pumpEdit = (EditText)findViewById(R.id.fuelpump); 

      priceEdit.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) { 

       } 

       @Override 
       public void afterTextChanged(Editable editable) { 
        //here, after we introduced something in the EditText we get the string from it 
        if(!priceEdit.getText().toString().trim().equalsIgnoreCase("") && !priceEdit.getText().toString().trim().equalsIgnoreCase(null)) 
         priceEditStr = priceEdit.getText().toString().trim(); 
        if(!pumpEdit.getText().toString().trim().equalsIgnoreCase("") && !pumpEdit.getText().toString().trim().equalsIgnoreCase(null)) 
         pumpEditStr = pumpEdit.getText().toString().trim(); 

        if(!priceEdit.getText().toString().trim().equalsIgnoreCase("") && !pumpEdit.getText().toString().trim().equalsIgnoreCase("")) 
        { 
        result = Integer.parseInt(priceEditStr) * Integer.parseInt(pumpEditStr);    
        costView.setText(" "+result); 
        } 

       } 
      }); 

      pumpEdit.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) { 

       } 

       @Override 
       public void afterTextChanged(Editable editable) { 
        //here, after we introduced something in the EditText we get the string from it 
        if(!priceEdit.getText().toString().trim().equalsIgnoreCase("")) 
         priceEditStr = priceEdit.getText().toString().trim(); 
        if(!pumpEdit.getText().toString().trim().equalsIgnoreCase("")) 
         pumpEditStr = pumpEdit.getText().toString().trim(); 


        if(!priceEdit.getText().toString().trim().equalsIgnoreCase("") && !pumpEdit.getText().toString().trim().equalsIgnoreCase("")) 
         { 
         result = Integer.parseInt(priceEditStr) * Integer.parseInt(pumpEditStr);    
         costView.setText(" "+result); 
         } 

       } 
      }); 



     saveButton = (Button) findViewById(R.id.saveBTN); 
     saveButton.setOnClickListener(new OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       DBAdapter dbAdaptor = new DBAdapter(getApplicationContext()); 
       try 
       { 
        dbAdaptor.open(); 
        String date = dateEdit.getText().toString(); 
        String price = priceEdit.getText().toString(); 
        String pump = pumpEdit.getText().toString(); 
        String cost = Float.toString(a); 
        String odometer = odometerEdit.getText().toString(); 
        String fcon = fconView.getText().toString(); 
        dbAdaptor.insertLog(date, price, pump, cost, odometer, fcon); 

       } 
       catch(Exception e){ 
        Log.d("Fuel Log", e.getMessage()); 
       } 
       finally 
       { 
        if(dbAdaptor != null) 
         dbAdaptor.close(); 
       } 
      } 
     }); 

    }//oncreate 


}//main 
+0

所以priceEdit的EditText上1或2?你想显示一个文本视图的结果取决于编辑文本? –

+0

et0.addTextChangedListener(l)有什么问题; et1.addTextChangedListener(l); – pskink

+0

我的意思是 也许EditText1是priceEdit,EditText2是pumpEdit。 有一个TextView,用来显示结果的costView。 结果将是priceEdit * pumpEdit – Chloe

回答

1

解决::

import android.os.Bundle; 
    import android.app.Activity; 
    import android.text.Editable; 
    import android.text.TextWatcher; 
    import android.widget.EditText; 
    import android.widget.TextView; 

    public class EditResult extends Activity { 

     //TextWatcher textWatcher; No need 
     EditText priceEdit,pumpEdit; 
     TextView costView; 
     String priceEditStr="",pumpEditStr=""; 
     int result; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 

      setContentView(R.layout.edit_sample); 

      priceEdit=(EditText) findViewById(R.id.editText1); 
      pumpEdit=(EditText) findViewById(R.id.editText2); 
      costView =(TextView) findViewById(R.id.textView1); 


      priceEdit.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) { 

       } 

       @Override 
       public void afterTextChanged(Editable editable) { 
        //here, after we introduced something in the EditText we get the string from it 
        if(!priceEdit.getText().toString().trim().equalsIgnoreCase("") && !priceEdit.getText().toString().trim().equalsIgnoreCase(null)) 
         priceEditStr = priceEdit.getText().toString().trim(); 
        if(!pumpEdit.getText().toString().trim().equalsIgnoreCase("") && !pumpEdit.getText().toString().trim().equalsIgnoreCase(null)) 
         pumpEditStr = pumpEdit.getText().toString().trim(); 

        if(!priceEdit.getText().toString().trim().equalsIgnoreCase("") && !pumpEdit.getText().toString().trim().equalsIgnoreCase("")) 
        { 
        result = Integer.parseInt(priceEditStr) * Integer.parseInt(pumpEditStr);    
        costView.setText(" "+result); 
        } 

       } 
      }); 

      pumpEdit.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) { 

       } 

       @Override 
       public void afterTextChanged(Editable editable) { 
        //here, after we introduced something in the EditText we get the string from it 
        if(!priceEdit.getText().toString().trim().equalsIgnoreCase("")) 
         priceEditStr = priceEdit.getText().toString().trim(); 
        if(!pumpEdit.getText().toString().trim().equalsIgnoreCase("")) 
         pumpEditStr = pumpEdit.getText().toString().trim(); 


        if(!priceEdit.getText().toString().trim().equalsIgnoreCase("") && !pumpEdit.getText().toString().trim().equalsIgnoreCase("")) 
         { 
         result = Integer.parseInt(priceEditStr) * Integer.parseInt(pumpEditStr);    
         costView.setText(" "+result); 
         } 

       } 
      }); 
     } 

    } 

给我您的反馈

+0

我试着,相应地改变我的代码 – Chloe

+0

所以是什么效果。 .......这对我来说是完美的结果 –

+0

我还在尝试,有点与我的代码混淆 我刚更新了我的代码 – Chloe

0

你必须做一些事情像这样在每个编辑文本视图的TextWatcher

public void afterTextChanged(Editable s) { 
       txtViewTotalPrice.setText(String.valueOf(Double.parseDouble(s.toString()) * Double.parseDouble(edittext_2.getText().toString()))); 
} 
+0

但这是改变文本之后.. W¯¯ – Chloe

+0

你可以做同样的'onTextChanged'也不过最好还是在“afterTextChanged' –

+0

什么不同 – Chloe

0

创建一个textwatcher这样的:

TextWatcher tw=new TextWatcher(){ 
      priceEdit.addTextChangedListener(new TextWatcher(){ 
      public void afterTextChanged(Editable s) 
      { 

      } 


      public void beforeTextChanged(CharSequence s, int start, int count, int after) 
      { 

      } 

      public void onTextChanged(CharSequence s, int start, int before, int count) 
      { 
       TextView costView = (TextView)findViewById(R.id.tcost); 
       costView.setText(String.valueOf(Double.parseDouble(pumpEdit.getText().toString()) * Double.parseDouble(priceEdit.getText().toString()))); 


      } 
     } 

,这既添加到编辑短信:

pumpEdit.addTextChangedListener(tw); 
priceEdit.addTextChangedListener(tw); 
+0

这样做,你想说的我使用priceEdit.addTextChangedListener(新的TextWatcher(){,一个EDITTEXT,而不是2? – Chloe

+0

没有用2编辑文本,但添加相同的textwatcher编辑文本 –

相关问题