次の問題があります。
動的に作成されるいくつかの TableRows と共に TableLayout があります。すべての行の右側に、別のアクティビティを呼び出すボタンを作成します。ここで、 でいくつかの情報を渡したいと思いますintent.putExtra()
。この場合、行の最初の情報でもある行番号を渡したいと思います。現在の状態の写真は次のとおりです。
これは、実行時に(ループで)ボタンを作成する方法です。
Button b1 = new Button (this, null, android.R.attr.buttonStyleSmall);
b1.setId(1000+grButtonId);
b1.setText("Request GR");
b1.setLayoutParams(params);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// Some code, taken out for clarity
// See next code snippet
}
});
grButtonId++;
tr.addView(b1);
これまでの私の考えは、(もちろん) ボタンの id を使用し、 の値で行番号を取得することですgrButtonId
。
ここで私の問題が発生します。私のonClick
方法を詳しく見てみましょう。
@Override
public void onClick(View view) {
// finished is true, as soon as GRRequest has recieved the data
if(!finished & !dataRequested){
new GRRequest().execute(getIntent().getLongExtra("poNr", 0),(long)view.getId());
b1.setText("Show GR");
Log.d("DataList", detailList.toString());
dataRequested=true;
}
else{
if (dataRequested){
b1.setText("Show GR");
}
Intent intent = new Intent(DataTableCreater.this, GRTableCreater.class);
intent.putExtra("lineNr",view.getId());
intent.putExtra("dataList", detailList);
startActivity(intent);
}
}
データをリクエストすると、クリックしたボタンが意図したとおりに "Show GR" に設定されます。他のボタンは「リクエスト GR」のままですが、これも問題ありません。しかし今、私はこれらのボタンを最初にタップしたときに "Show GR" に変更し、2 回目のタップでアクティビティを開始したいと考えています。ここまでで、ボタンは「Show GR」に変わり、アクティビティを直接開始します。これを機能させるための解決策は何ですか?