0

2つのタブがあるアクティビティがあります。最初のものにはボタンがあります。このボタンを押すと、2番目のタブに3つのビュー(ImageView、TextView、Button)を持つテーブル行が作成されます

このボタン(先ほど作成したボタン)を押したときに新しいアクティビティを開始したいのですが、どうすれば参照できるのかわかりません。

注:無限のtableRowsが存在する可能性があります。

ありがとう!!

TableRow tr = new TableRow(this);
ImageView view = new ImageView(this);
TextView view2 = new TextView(this);
Button view3 = new Button (this);

view.setImageBitmap(thumbnail);
view.setPadding(1, 5, 0, 0);
view.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

Calendar c = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");

view2.setText("" + et.getText()  + dateFormat.format(c.getTime()) );
view2.setGravity(Gravity.CENTER_HORIZONTAL);
view2.setGravity(Gravity.CENTER_VERTICAL);

view3.setGravity(Gravity.RIGHT);
view3.setGravity(Gravity.CENTER_VERTICAL);

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

tr.addView(view, metrics.widthPixels/3, 150);
tr.addView(view2, metrics.widthPixels/2, 100);
tr.addView(view3, metrics.widthPixels/6, 20);
tl.addView(tr);
4

2 に答える 2

2

ボタンを作成すると、そのボタンへの参照があります。他のボタンと同じように、OnClickListenerを追加するだけです。

Button view3 = new Button(this);
view3.setOnClickListener(new OnClickListener() {
   public void onClick() {
     // do stuff
   }
});
于 2012-08-30T22:02:53.943 に答える
0

ボタンのリストができた場合、最も簡単な方法は、for each ループを使用してコレクションを参照し、それぞれに対して setOnClickListener メソッドを呼び出すことです (リスナーの同じインスタンスを使用するかどうかは、何に応じて異なります)。あなたがしたい):

// Instantiate the listener that will be used by the buttons.
View.OnClickListener clickListener = new View.OnClickListener() {
   public void onClick(View v) {
     // do something...
   }
});

List<Button> buttons = new ArrayList<Button>();

// add button instances to the buttons list

for (Button button : buttons) {
    button.setOnClickListener(clickListener);
}

著者のコメントから更新:

ボタンごとにそれらの1つをインスタンス化する迅速で汚い実装。他にも多くのソリューションがあります。

private class RowButtonListener implements View.OnClickListener {

    private final Context mContext;
    private final String mActivityText;

    public RowButtonListener(Context context, String activityText) { // could be cleaner by providing resource id (int) if you use strings.xml
        mContext = context;
        mActivityText = activityText;
    }

    public void onClick(View v) {
        Intent intent = new Intent(mContext, MyActivity.class);
        intent.putExtra(MyActivity.TEXT_KEY, mActivityText);
        startActivity(intent);
    }

}
于 2012-08-30T22:17:12.593 に答える