基本的に、for ループ内でボタンを作成しています。ボタンを押すと、各ボタンが異なる値を返す必要があります。
独自の onClickListener() を作成し、初期化時にパラメーターとして必要なデータを渡すとうまくいくと考えていました。私が思いついたものには構文エラーはないようですが、実行時にボタンをクリックするとアプリがクラッシュします。
これまでに得たものの簡略化されたバージョンを次に示します。
int counter = 1;
for( Program element : someList)
{
//some other code for dynamically creating textviews to stick the buttons in
//code which creates the buttons on the fly
moreInfo = new Button(this);
moreInfo.setText("More Info");
moreInfo.setOnClickListener(new DynamicOnClickListener(counter));
counter++;
}
カスタム リスナー クラス
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
public class DynamicOnClickListener implements OnClickListener
{
int counter;
public DynamicOnClickListener(int acounter) {
this.counter = acounter;
}
public void onClick(View v) {
Log.v("DynamicOnClickListener","1");
Toast.makeText(v.getContext(), counter, Toast.LENGTH_LONG).show();
}
}
したがって、理論的には、これが機能した場合、各ボタンは異なる数値を返すことになりますが、それが理にかなっていることを願っています.