2011-10-19 5 views
0

基本的には、すでに持っているコードから単純なコンポーネントをカプセル化したいと思います。通常のAndroidコンポーネントを使用してカスタムコンポーネントを作成する

基本的にボタンが入ったLinearLayoutです。これらのボタンはListViewに変更されますが、他にもいくつかの小さなことがあります。

現在、私はそれらを使ってXMLレイアウトを作成しています。ボタンと、リストと他の小さなものとのやりとりをプログラムで設定しています。

明らかに私は自分自身に考えて、これをカプセル化しましょう。

私はLinearLayoutを拡張してボタンを追加しようとしました。すでに 私が見てきた

などどのようにボタンを膨らませるために、私はビューが対策とinflationsいじりせずに作成される直前に、このボタンを作成するためにオーバーライドしますどのような方法ビュー に追加するには考えて、持っていません私が見るカスタムコンポーネントは、まったく新しいコンポーネントか、カスタムコンポーネントに小さな機能を追加するコンポーネントです。

これにはいくつかのガイドラインがありますか? チュートリアル/サンプルがいいですか?

何か助けていただければ幸いです。ありがとう!

編集:

これはもう少し具体的なものです。

基本的にListViewのフィルタボタンを保持するViewを作成します。これはフィルターが異なる別の場所で使用されるため、ボタンに柔軟性が必要です。

基本的に私はこのような何かをしたいと思います:

CustomView view = new CustomView(activity); 
view.addButton("Lala", new OnFilterClickListener { 
    onClick(ListView list, View v) { 
     // Do the filtering 
    } 
}); 

mListView.addHeaderView(view); 

私はビューが、それはボタンを示すための重みだ適応フィルタは、そのようなアクティブな、ものであることをユーザーに示したいと思います。

しかし、私はまだそれらの動的に追加されたボタンをどのように表示させるかわからない、どこでそれらを生成するのか、それらを膨らませる方法、そしてそのようなもの。

あなたも、このようにクリックをディスパッチする前にビューに何かを行うことができます
+0

膨らま/私は '新しいのCustomView(後のものを追加したい場合はどのようなコンストラクタ –

+0

をすべてを追加) '?コンストラクタは呼び出されましたが、アイテムはまだ描画されていません。 – Draiken

+0

'LinearLayout'を拡張しても' addView'を使うことができます。 –

答えて

1
public class myLayout extends LinearLayout { 

    //... 

    public void addButton(String text, OnClickListener listener) { 
     Button newButton = new Button(mContext); 
     newButton.setText(text); 
     newButton.setOnClickListener(listener); 
     //Say we want the weights to be equal 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.Fill_PARENT, 1); 
     addView(newButton, params); 
    } 

    //... 

} 

public class myLayout extends LinearLayout { 

    //... 

    public void addButton(String text, final OnClickListener listener) { 
     Button newButton = new Button(mContext); 
     newButton.setText(text); 
     newButton.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v) { 
       //do whatever you want 
       //like change background of button or something 
       //finally 
       listener.onClick(v); 
      } 
     }); 
     //Say we want the weights to be equal 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.Fill_PARENT, 1); 
     addView(newButton, params); 
    } 

    //... 

} 
+0

質問に答える前にあなたが言ったように私はまさにやってしまいました。それはこのコードだと思っていたが、何か他のものだった、笑...ありがとう! – Draiken

関連する問題