2011-04-20 7 views
0

私は、フィールドをインタラクティブに追加したり削除したりできるアンドロイドアプリケーションを作成しています。ユーザーが追加する各フィールドには、いくつかのボタンと、ユーザーが対話できる値があります。私はそれが自分のonClickListenerを保持するフィールドを処理するためのサブクラスを作成すると思ったが、私はそうする方法がわからない。クラスを使ってアンドロイドでビューを設定する

ここに私の意図を明確にするべき擬似コードがあります。

public class sClass extends View implements onClickListener{ 
    this.setContextView(R.layout.vClass);//how do I do this in a correct way? 
     @Override 
     public void onClick(View v){ //add code here 
     } 
    } 

とアプリケーションのメインクラスですAClassは:

は、私はクラス、vClassを持っていると言います。

public class aClass extends Activity implements onClickListener{ 
    Button b; 
    LayoutInflater i; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     this.b =(Button)this.findViewById(R.id.btn); 
     b.setOnClickLister(this); 

    } 
    @Override 
    public void onClick(View v){ 
     //this is what I have now to add View 
     final LinearLayout canvas =(LinearLayout)aClass.this.findViewById(R.id.main); 
     View cv =this.inflater.inflate(R.layout.counter, canvas, false); 
     canvas.addView(cv); 
    } 
} 

どのようにvClassを使用してaClassに要素を追加できますか。

これを入力すると、別の解決策が考えられます。

私は(サブコンポーネントなしで)追加されているすべてのビューのidのを追跡する場合、私はそのような何かを行うことができます:

idは、私がどのビューに割り当てられているIDです
View vv = findViewById(id); 
Button bb = vv.findViewByIf(R.id.xmlId); 

私は知っているとxmlIdは、XMLファイルで指定した文字列ですか?解決のために

おかげ

Yotam

、レイアウトで使用

答えて

1

IDは以下の説明を読んで、必ずしも一意ではありませんので、私はあなたが

として、 ArrayListで追加 Viewsを維持する必要がありますね
View cv =this.inflater.inflate(R.layout.counter, canvas, false); 
this.viewList.add(cv); 
canvas.addView(cv); 

またはsClassのインプリメンテーション内にインデックスメンバーを宣言できますnが、そしてArrayListに追加インデックスを格納します。あなたが望むビューへのアクセス権を持っている

private int index; 

public sClass(final int index) 
{ 
    this.index = index; 
} 

public int getIndex() 
{ 
    return this.index; 
} 

@override 
public boolean equals(Object obj) 
{ 
    return ((obj instanceof sClass) && (((sClass)obj).getIndex() == this.index)); 
} 

どちらの方法を。

ビュー内産むボタンは次のようにR.id.buttonIdは、VVビューのレイアウトxmlファイルで宣言されたfindViewById()方法

Button bb = vv.findViewById(R.id.buttonId); 

経由でアクセス可能です:

<Button android:id="@+id/buttonId" [...] /> 
+0

感謝。私は周りに遊び、それがどのように行ったか教えてくれます。 – Yotam

+0

幸運、問題がある場合はお知らせください – rekaszeru

+0

これについて考えると、私は新しい質問があります。私が配置する各ビューには、onClickに応答するフィールドがあります。クリックリスナーにonClickListerを設定する必要がありますが、クリックしたものを確認するにはどうすればよいですか? idがオーバーロードされているので、私はgetId()メソッドを使うことができません...ありがとう – Yotam

関連する問題