簡體   English   中英

Android:EditText

[英]Android: EditText

我有一個listview其中包含諸如sin,cos,tan等數學函數的列表。 我試圖在listview輸出選定的項目,並在EditText輸出它。 當我使用下面的代碼時,可以在EditText看到所選的項目,但是當我想在括號中添加其他數字時,它不在括號之間。 我應該如何糾正呢?

例如,我選擇了round函數,它應該在EditText顯示Round() ,如Round(2.3)。

但是我不能在括號之間添加其他數字。 它就像Round()2.3一樣出現在括號后面。

請指教。

我的代碼如下:

     eqString = new StringBuilder();
        ArrayList<String> mathsFuncArray =  new ArrayList<String>();
                mathsFuncArray.add("round");
                mathsFuncArray.add("abs");
                mathsFuncArray.add("sqr");
                mathsFuncArray.add("sqrt");
                mathsFuncArray.add("log");
                mathsFuncArray.add("exp");
                mathsFuncArray.add("sin");
                mathsFuncArray.add("cos");
                mathsFuncArray.add("tan");
                mathsFuncArray.add("cotan");
                ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, mathsFuncArray);
                mathsFuncArray.setAdapter(adapter);

                mathsFuncArray.setOnItemClickListener(new OnItemClickListener() {
                      public void onItemClick(AdapterView<?> myAdapter, View myView, int myItemInt, long mylng) {
                        String selectedFromList =(String) (mathsFuncArray.getItemAtPosition(myItemInt));
                        eqString.append(selectedFromList + ""()");


                           updateEditText();
                      }                 
                }); 



     private void updateEditText() {

              StringBuilder builder = new StringBuilder();

              builder.append(eqString.toString());

             EditText.setText(builder);
             }

它應該是

eqString.append( "(" +selectedFromList + ")");

你從哪兒得到的數字?

這行:

eqString.append(selectedFromList + ""()");

可以這樣修改:

可以如下設置數字字符串:

int num1 = 1;
int num2 = 2;
String numString = ""+num1+","+num2;
eqString.append(selectedFromList + "("+numString+")");

這會將您的數字字符串放在括號之間。

編輯:

由於數字來自按鈕,因此請執行以下操作://全局變量:

int selNum1=0;
int selNum2=0;
int mod = 0;
String selItem="";


/// set your arrylistener as before....

 mathsFuncArray.setOnItemClickListener(new OnItemClickListener() {
                  public void onItemClick(AdapterView<?> myAdapter, View myView, int myItemInt, long mylng) {
                    selItem =(String) (mathsFuncArray.getItemAtPosition(myItemInt));
                    eqString.append(selItem +"()");


                       updateEditText();
                  }                 
            }); 

// set up the button, named Button number1;

 // you'll want to define click listeners for your number buttons.  
 number1.setOnClickListener(new onClickListener({

@Override 
onClick(View v) {
   setSelNums(1);
   String display = selItem+"("+selNum1+","+selNum2+")";
   eqString.setLength(0);
   eqString.append(display);
   updateEditText();

});

public void setSelNums(int num) {
   // you'll have to determine which numbers should be selNum1 or selNum2 and when (i.e. should it just always go "selNum1" is set first, followed by "selNum2" and then new entries just overwrite these...or something else?
    if(mod%2 ==0) {
      selNum1 = num;
    } else {
      selNum2 = num;
    } 
    mod+=1;
}
 eqString.append(selectedFromList + ""()");

您沒有在()之間添加任何內容。

eqString.append(selectedFromList + "(" + something + ")");

另外,函數updateEditText()無效,因為每次調用該函數時都會創建stringbuilder

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM