マルチスレッドでUIいじったら駄目だってこと

えーそれで、マルチスレッドでUIいじったら駄目(Only the original thread that created a view hierarchy can touch its views.)とか言われて、要は何かつうと、スレッドの中からUIいじっちゃ駄目らしいのでHandlerってのを使うらしいです。

こういうのは駄目だった気がする

  new Thread(
    public void run() {
    LayoutParams param = new ViewGroup.getLeayoutParams(50.50); 
        mView.setLayoutParams(param);
    }
  }).start();

private final Handler handler=new Handler();


(new Thread(){
	public void run() {
		handler.post(new Runnable(){
			public void run() {
                            LayoutParams param = new ViewGroup.getLeayoutParams(50.50); 
				mView.setLayoutParams(param);
			}
		});
	}
}).start();

たぶんこんな感じで動いたんだけれど、動いていないんだけれど、
setLayoutParamsをHandlerの中でやりたいんだけれど、そもそも、Handler中とか関係無しに、LayoutにaddViewしたあととか、setContentViewした後ってsetLayoutParams出来ないんだっけぇ??
java.lang.ClassCastException: android.view.ViewGroup$LayoutParams

ってのが出る、1.6だとでる。それ以外は面倒だから調べていない。

んで解った。

(new Thread(){
	public void run() {
		handler.post(new Runnable(){
			public void run() {
                            //LayoutParams param = new ViewGroup.getLeayoutParams(50.50);
                            LayoutParams param = mView.getLayoutParams();
                mView.setLayoutParams(param);
			}
		});
	}
}).start();

で、動いた。使っているのはLinearLayoutなんだけれど、LinearLayoutはViewGroupを継承しているから、いけると思ったんだkれど駄目だった。素直にViewからLayoutParamsを取得してパラメタ設定するのがいいと思う