2012-05-09 18 views
0

を伸ばしながら、私はLinearLayoutを延長している私のクラスを持って更新していません。のTextViewの値はのLinearLayout

コードは以下のようにスニペット:

class MyLinearLayout extends LinearLayout{ 

static TextView txt; 
static Button btn; 
static LayoutInflater inflater; 

public MyLinearLayout(Context context) { 
    super(context); 
    // TODO Auto-generated constructor stub 
    View.inflate(context, R.layout.displayinfo, this); 
    inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

} 

@Override 
protected void onLayout(boolean changed, int l, int t, int r, int b) { 
    // TODO Auto-generated method stub 
    super.onLayout(changed, l, t, r, b); 
} 

public void change(){ 

    View view =inflater.inflate(R.layout.displayinfo, null); 
    //Button btn = (Button) inflate(context, R.id.btn, null); 
    txt = (TextView) view.findViewById(R.id.textView1); 
    Handler handler = new Handler() { 
     @Override 
     public void handleMessage(Message msg) { 
      txt.setText("Changed"); 

     } 
    }; 
    //view.refreshDrawableState(); 


} 

@Override 
protected void onDraw(Canvas canvas) { 
    change(); 
} 
} 

をしかしonDraw()時に値が変更取得されていない - >change()メソッドが呼び出さなっています。 私はWindowManagerに、このビューを追加しています。私は基本的にarrayから値を更新する必要があり、この拡張されたビューで

。しかし問題は、ループを連続的に呼び出す方法です。 invalidate()を呼び出すと、私は継続的にそれを呼び出すことができますが、それはビューは、ユーザーが実際にViewを見ることができないので、高速リフレッシュを取得しますだけでなく、CPUの使用率が増加します。

ので、基本的に私は2つの問題を抱えている:

1. TextView上記のコードに更新され得ていませんか?

は2.How我々は基本的に連続してinvalidate()メソッドを呼び出すことなく、ビューの値を更新していますか?事前

答えて

0

呼び出す変化

おかげで、テキストは変更されませんので、変更の内側()あなたはハンドラを持っている、とあなたがテキストを変更するには、それを伝えることによって、そののhandleMessage()をオーバーライドしています。実際に変更を加えるには、ハンドラに信号を送る必要があります。その後、変更方法は、実際のTextViewのテキストを設定する必要があり

//view.refreshDrawableState(); 

の代わりに

handler.sendEmptyMessage(0); 

は、この行を入れてみてください。

編集:また、変更を呼び出すたびに新しいビューを膨張させるべきではないでしょう。実際にはコンストラクターですでに行っているため、何も展開する必要はありません(参照を取得しようとしているビューです)。テキストビューの参照を取得するには、その前に参照なしでfindViewById()を呼び出すことができます。内部のchange()の代わりにコンストラクタでそれを行う必要があります。私はhandler.sendEmptyMessage(0)を入れてみました

+0

。しかし、それは動作しません。 ハンドラを脇に置いておくと、ビュー内のデータをリフレッシュする他の方法は何ですか? – Robust

関連する問題