4

文字列配列から動的にテーブルにデータを入力しています。テーブルの各行には、1つの列の値をインクリメント/デクリメントするためのプラスボタンとマイナスボタンもあります。これらのボタンも、以下のコードのように動的に作成されます。ここで、クリックしたときに正確なボタンを検出するにはどうすればよいですか。すなわち; 2行目の「+」ボタンをクリックした場合、さらに処理するためにクリックされたボタンのIDを取得するにはどうすればよいですか。

 plusButton= new Button(this);
 minusButton= new Button(this);
 createView(tr, tv1, names[i]);
 createView(tr, tv2, (String)(names[i+1]));
 minusButton.setId(i);
 minusButton.setText("-");
 minusButton.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
 plusButton.setId(i);
 plusButton.setText("+");
 plusButton.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));`
4

2 に答える 2

3

onClickListenerボタンごとにリスナーを設定できます。view.getId()メソッドのメソッドからのボタンのIDを使用してonClick()、ボタンのクリックを識別します。

ここのように、ボタンごとに個別のリスナーを追加できます(各ボタンに設定しているIDが行に対応していると仮定します)

minusButton.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
             // Do some operation for minus after getting v.getId() to get the current row
        }
    }
);

編集:

あなたのコードはこんな感じだと思います。逸脱がある場合は訂正してください。

Button minusButton = null;
for(int i = 0; i < rowCount; i++)
{
    minusButton = new Button(this);
    minusButton.setId(i);
    // set other stuff and add to layout
    minusButton.setOnClickListener(this);
}

クラスにインターフェースView.OnClickListenerを実装させ、onClick()メソッドを実装させます。

public void onClick(View v){
    // the text could tell you if its a plus button or minus button
    // Button btn = (Button) v;
    // if(btn){ btn.getText();}
    // getId() should tell you the row number
    // v.getId()
}
于 2013-03-27T11:58:19.223 に答える
0

あなたはタグで行うことができます:minusButton.setTag("-")plusButton.setTag("+")

clickListenerで、ボタンから。を使用して取得しますview.getTag()

次に、文字列タグを比較するアクションを切り替えます。

編集:
IDは一意である必要があります。setId()が機能しない場合は、setTag()メソッドが役立つ場合があります。

于 2013-03-27T12:17:45.470 に答える