Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to get text from textview

if I have set text in textview in such way, which is not problem:

  tv.setText("" + ANS[i]); 

this simply getting from this way.

     String a = tv.getText().toString();      int A = Integer.parseInt(a); 

But in case of setting value in textView.

 tv1.setText("  " + X[i] + "\n" + "+" + " " + Y[i]); 

which is like this

              5              +9 

I have problem , this value how to get.

like image 240
Horrorgoogle Avatar asked Dec 15 '11 09:12

Horrorgoogle


People also ask

How do I copy text from TextView?

Select + copy text in a TextView? Generally, we can copy / paste the value from EditText by long click. It is an in-build functionality for Android.

How do I access TextView?

To access the TextView present in a layout file, from Kotlin file, use findViewById() method with the TextView id passed as argument. The attribute id will help to find the specified widget.

Which method is used to set the text in a TextView?

SetText(String, TextView+BufferType) Sets the text to be displayed using a string resource identifier.

What is the use of text TextView in android?

A TextView displays text to the user and optionally allows them to edit it. A TextView is a complete text editor, however the basic class is configured to not allow editing.


2 Answers

I haven't tested this - but it should give you a general idea of the direction you need to take.

For this to work, I'm going to assume a few things about the text of the TextView:

  1. The TextView consists of lines delimited with "\n".
  2. The first line will not include an operator (+, -, * or /).
  3. After the first line there can be a variable number of lines in the TextView which will all include one operator and one number.
  4. An operator will allways be the first Char of a line.

First we get the text:

String input = tv1.getText().toString(); 

Then we split it up for each line:

String[] lines = input.split( "\n" ); 

Now we need to calculate the total value:

int total = Integer.parseInt( lines[0].trim() ); //We know this is a number.  for( int i = 1; i < lines.length(); i++ ) {    total = calculate( lines[i].trim(), total ); } 

The method calculate should look like this, assuming that we know the first Char of a line is the operator:

private int calculate( String input, int total ) {    switch( input.charAt( 0 ) )       case '+':          return total + Integer.parseInt( input.substring( 1, input.length() );       case '-':          return total - Integer.parseInt( input.substring( 1, input.length() );                    case '*':          return total * Integer.parseInt( input.substring( 1, input.length() );                    case '/':          return total / Integer.parseInt( input.substring( 1, input.length() ); } 

EDIT

So the above as stated in the comment below does "left-to-right" calculation, ignoring the normal order ( + and / before + and -).

The following does the calculation the right way:

String input = tv1.getText().toString(); input = input.replace( "\n", "" ); input = input.replace( " ", "" ); int total = getValue( input ); 

The method getValue is a recursive method and it should look like this:

private int getValue( String line ) {   int value = 0;    if( line.contains( "+" ) ) {     String[] lines = line.split( "\\+" );     value += getValue( lines[0] );      for( int i = 1; i < lines.length; i++ )       value += getValue( lines[i] );      return value;   }    if( line.contains( "-" ) ) {     String[] lines = line.split( "\\-" );     value += getValue( lines[0] );      for( int i = 1; i < lines.length; i++ )       value -= getValue( lines[i] );      return value;   }    if( line.contains( "*" ) ) {     String[] lines = line.split( "\\*" );     value += getValue( lines[0] );      for( int i = 1; i < lines.length; i++ )       value *= getValue( lines[i] );      return value;   }    if( line.contains( "/" ) ) {     String[] lines = line.split( "\\/" );     value += getValue( lines[0] );      for( int i = 1; i < lines.length; i++ )       value /= getValue( lines[i] );      return value;   }    return Integer.parseInt( line ); } 

Special cases that the recursive method does not handle:

  • If the first number is negative e.g. -3+5*8.
  • Double operators e.g. 3*-6 or 5/-4.

Also the fact the we're using Integers might give some "odd" results in some cases as e.g. 5/3 = 1.

like image 171
kaspermoerch Avatar answered Sep 28 '22 04:09

kaspermoerch


split with the + sign like this way

String a = tv.getText().toString(); String aa[]; if(a.contains("+"))     aa = a.split("+"); 

now convert the array

Integer.parseInt(aa[0]); // and so on 
like image 42
Pratik Avatar answered Sep 28 '22 04:09

Pratik