2016-06-14 20 views
1

ich eine benutzerdefinierte Textview-Klasse mit diesem Code haben:Android - auf einen Wert von Textview zu einem benutzerdefinierten Textview

public CustomTextView extends TextView { 

     public CustomTextView(Context c, AttributeSet a) { 
      super(c, a); 
      TextView tv = (TextView) findViewById(R.id.myTv); 
      String str = tv.getText().toString(); 

      setText(str); 
     } 
    } 

Und mein main.xml enthält diese:

<TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/myTv" 
     android:text="Unkown" /> 

    <com.test.CustomTextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="100.0sp" /> 

Was ich will do will ich den String-Wert der TextView (mit ID von myTv) bekommen und den Text meiner CustomTextView genauso einstellen wie die TextView. So etwas wie TextView = CustomTextView.

Der Zeichenfolgenwert von myTv wird durch eine gemeinsame Einstellung geändert, so dass sich der benutzerdefinierte Text bei jedem Textwechsel ändert.

Mein Problem ist, wie man das richtig macht?

+1

Legen Sie eine ID in Ihrer benutzerdefinierten Ansicht fest und aktualisieren Sie sie jedes Mal, wenn sich Ihre Datenmenge ändert? Fast identisch mit der Aktualisierung Ihrer Textansicht. Wenn Sie einen Text-Listener möchten, lesen Sie die Android [TextWatcher] (https://developer.android.com/reference/android/text/TextWatcher.html) -Klasse. – MeetTitan

+0

Ja, das ist möglich, aber was ich will, ist, dass ich die Aktivität dort belasse, wo die Textansicht ist. Ich möchte, dass die benutzerdefinierte Textansicht den Job ausführt und sich jedes Mal ändert, wenn die Textansicht geändert wird. –

+0

Schau in den Link am Ende meines Kommentars und sieh, dass ich deine Gedanken gelesen habe. 'yourTextView.addTextChangedListener (new TextWatcher() {...});' – MeetTitan

Antwort

0

Das ist wirklich einfach, Sie initialisieren beide Textansichten und erhalten Zeichenfolge von einer und setzen sie in einer anderen. Wenn Sie Ihre Klasse mit TextView erweitern, erhalten Sie alle Methoden, die TextView verwenden kann.

Setzen Sie ID auf Ihre CustomTextView, was auch immer Sie wollen, ich benutze customTv ID in diesem Fall.

EDIT:

Soweit ich verstanden Sie textChangeListener wollen, hier ist example.

+0

Entschuldigung, ich habe deine Antwort nicht verstanden. Was ich will ist, ich möchte nicht die Aktivität bearbeiten, wo Textview ist und lassen Sie die customtextview selbst ändern. –

+0

Wie meinst du Änderung selbst? Meinst du, jedes Mal, wenn du Textview aktualisierst, ändert sich auch deine customtextview oder ... –

+0

Mein Hauptziel ist, dass ich nur möchte, dass die benutzerdefinierte Textansicht nur den gleichen Wert der Textansicht hat. –