在Android中的edittext中从textview获取价值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Android中的edittext中从textview获取价值相关的知识,希望对你有一定的参考价值。

我只是android开发的初学者。我正在开发一个应用程序,我必须检索由字符和整数组成的textview。我想从该textview中仅检索Edittext中的Integers。

我想要为Edittext检索的文本

               <TextView
                android:id="@+id/txt"
                android:layout_width="118dp"
                android:layout_height="38dp"
                android:layout_marginLeft="38dp"
                android:text="Sun Glasses 
    Rs.729"
                android:textColor="@color/colorAccent"
                android:textSize="15sp" />

Edittext在这里:

        <EditText
        android:id="@+id/editTextAmount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAlignment="center" />

我试图实现这一点:

private EditText editTextAmount;
private String paymentAmount;

private String paymentAmount;

editTextAmount = (EditText) findViewById(R.id.editTextAmount);
amount=(TextView)findViewById(R.id.txt);

editTextAmount.setText(amount.getText().toString());
paymentAmount = editTextAmount.getText().toString();

我尝试了一切,也遵循了许多教程,但没有得到我想要的结果。希望我能得到你们的帮助,我将非常感谢你的帮助。

答案

试试这个方式

    String amount = amount.getText().toString();
String getNum = ExtractNumberFromString(amount);
paymentAmount.setText(getNum);

    public static String ExtractNumberFromString(String cnvrtdDate){
        String [] dateArray = cnvrtdDate.split("|");

        StringBuilder sb = new StringBuilder();
           StringBuilder sb1 = new StringBuilder();
        for(int i=0;i<dateArray.length;i++)
        {
            boolean ItIs = isNumeric(dateArray[i]);
            if(ItIs)
            {

                sb.append(dateArray[i]);
            }
            else
            {
                sb1.append(dateArray[i]);
            }
        }

    System.out.println("Numbers="+sb);
    System.out.println("Characters="+sb1);
        return  sb.toString();
    }


        public static boolean isNumeric(String str)
        {
            try
            {
                int d = Integer.parseInt(str);
            }
            catch(Exception nfe)
            {
                return false;
            }
            return true;
        }
另一答案

试试这段代码:

    String regex = "[0-9]+";
    String data = amount.getText().toString();

    Pattern pattern = Pattern.compile(regex);
    List<String> list = new ArrayList<String>();
    Matcher m = pattern.matcher(data);
    String text="";
    while (m.find()) {
        text+=","+m.group();
    }
    editTextAmount.setText(amount.getText().toString());
另一答案

您可以从编辑文本中提取字符串,然后使用正则表达式从字符串中提取数字。就像是

Pattern p = Pattern.compile("-?\d+");
Matcher m = p.matcher(editTextAmount.getText().toString());
while (m.find()) {
  System.out.println(m.group());
}

这将打印编辑文本中的所有数字。

“ - ?”允许它也捕获负数。你可以删除,因为我怀疑金额将是负数。

另一答案

我的错。我只需要更改edittext的输入类型。

    <EditText
    android:id="@+id/editTextAmount"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="number"
    android:textAlignment="center" />

以上是关于在Android中的edittext中从textview获取价值的主要内容,如果未能解决你的问题,请参考以下文章

在Android中从/向文件读取/写入字符串

在 Android 布局 XML 中的 EditText 元素之前放置一个 TextView 会导致 EditText 不显示

EditText Android中的多语言问题

在android中的EditText上输入时如何过滤ListView数据

如何从RecyclerView中的EditText获取字符串值?

Android资料之-EditText中的inputType