2016-06-14 3 views
1

へのTextViewの値を設定します。アンドロイド - 私はこのコードでカスタムのTextViewクラスを持つカスタムの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); 
     } 
    } 

をそして、私のmain.xmlは、この含まれています。私はしたいもの

<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" /> 

をテキストビュー(myTvのID)の文字列値を取得し、TextViewと同じCustomTextViewのテキストを設定したいですか? TextView = CustomTextViewのようなものです。

myTvの文字列値はsharedpreferencesによって変更されるため、テキストが変更されるたびにカスタムテキストも変更されます。

私の問題はこれを正しく行う方法です。

+1

カスタムビューでIDを設定し、データセットが変更されるたびにIDを更新しますか?テキストビューを更新する方法とほぼ同じです。テキストリスナーが必要な場合は、Android [TextWatcher](https://developer.android.com/reference/android/text/TextWatcher.html)クラスをチェックしてください。 – MeetTitan

+0

はい、それは可能ですが、私が望むのは、私はテキストビューがあるところのアクティビティをそのまま残すことです。私は、テキストビューが変更されるたびに、カスタムのテキストビューにジョブを実行し、それ自身を変更したい。 –

+0

私のコメントの最後にリンクを見て、私があなたの心を読んでいることを見てください。 'yourTextView.addTextChangedListener(new TextWatcher(){...});' – MeetTitan

答えて

0

これは本当にシンプルですが、両方のテキストビューを初期化し、文字列を取得して別のテキストビューに設定するだけです。 TextViewでクラスを拡張すると、TextViewで使用できるすべてのメソッドが提供されます。

CustomTextView customtv = (CustomTextView) findViewById(R.id.customTv); 
TextView tv = (TextView) findViewById(R.id.myTv); 
customtv.setText(tv.getText()); 

この場合、customTv idを使用する場合は、CustomTextViewにIDを設定するだけです。

EDIT:

は、私の知る限り理解されるように、あなたはtextChangeListenerをしたい、ここexampleです。

+0

申し訳ありませんが私はあなたの答えを理解しませんでした。私が望むのは、textviewがある場所を編集して、customtextview自体を変更させたくないということです。 –

+0

どうやって自分自身を変えるのですか? Textviewを更新するたびに、あなたのcustomtextviewの変更もまた... –

+0

私の主な目標は、カスタムテキストビューをテキストビューの同じ値にしたいだけです。 –

関連する問題