0

私はアンドロイド ターモスタット アプリを開発しており、アイテムのグループのリストを (コードで) 作成しました。したがって、ボタンを動的に追加します。ユーザーがこれらのボタンのいずれかをクリックすると、同じ親 (LinearLayout) を持つすべてのビューが削除されます。

それを行うコードをどのように書くことができますか?

この「エントリ」を作成するコードの下。

private void createEntry(int entry){
    TableLayout my_root = (TableLayout) findViewById(R.id.day_root);
    LinearLayout A = new LinearLayout(this);
    A.setOrientation(LinearLayout.HORIZONTAL);
    A.setId(DYN_LAYOUT_ID + entry);
    ImageView im1 = new ImageView(this);
    ImageView im2 = new ImageView(this);
    im1.setImageResource(R.drawable.sun_small);
    im2.setImageResource(R.drawable.moon_small);

    TextView tv = new TextView(this);
    Button btn = new Button(this);
    btn.setText("remove");

    tv.setText(new StringBuilder().append(pad(sHour)).append(":").append(pad(sMinute))
            .append(" - ").append(pad(eHour)).append(":").append(pad(eMinute)));
    tv.setTextSize(20);
    A.addView(im1);
    A.addView(tv);
    A.addView(im2);
    A.addView(btn);
    my_root.addView(A);
}

編集:問題を解決しているように見える私の最初の試み(上記のコードの更新部分)

Button btn = new Button(this);
    btn.setId(BUTTON_ID + entry);
    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            int row = v.getId() - BUTTON_ID;
            LinearLayout ll = (LinearLayout) findViewById(DYN_LAYOUT_ID + row);
            ll.removeAllViewsInLayout();    
        }

    });

btn をクリックすると、この Button が属する LinearLayout に属するすべてのビューが削除されます。

4

1 に答える 1

0

すべてViewGroupの には のフレーバーがありremoveView()ます。インスタンス変数を使用して、一部のビューへの参照を保持する必要がある場合があります。

于 2013-06-18T19:46:46.553 に答える