1

動的に生成されるアクティビティの1つにボタンのリストがあり、それらのボタンの1つをクリックすると、別のアクティビティを開いて、リスト内のどのボタンがクリックされたかに基づいてテキストを表示する方法を考えていました。

forループを使用してボタンを生成します(読みやすくするためにループ内のTextViewに関連する詳細を省略しました。また、他の場所で定義されたいくつかの変数も使用しました)

for (int i = 0; i < N; i++) {   

        // create a new Button
        final Button rowButton = new Button(this);

        // Set properties of rowButton
        rowButton.setText("See Recipe");
        rowButton.setId(RecipeArray.get(i));            

        // add the Button to the LinearLayout
        myLinearLayout.addView(rowButton);

        // save a reference to the Button for later
        myButtons[i] = rowButton;
    }

ボタンは特定のレシピを表しており、クリックすると、ユーザーを新しいアクティビティ「HowToMake」に移動し、そのレシピのみに関連する情報を含むテキストビューを生成する必要があります。これらは、コードスニペット "myButtons [i] = rowButton"の下部にある配列に格納されていますが、これをどのように使用するかはわかりません。

助けてくれてありがとう。

4

1 に答える 1

0

ボタンを追加するときに、各ボタンにonclicklistenerを追加する必要があります。startActivity次に、onclickイベントで、現在のアクティビティのメソッドを呼び出すことができます。新しいアクティビティを開くインテントを作成するときに、それに「エクストラ」を追加できます(つまり、新しいアクティビティに渡されるデータを追加できます)。開きたいレシピのIDなどの新しいデータ:)

例(テストされていませんが、正しい線に沿っている必要があります):

rowButton.setTag("the unique ID by which you can read back your recipe");
rowButton.setOnClickListener(new OnClickListener() {           
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(YourActivity.this, TheViewRecipeClass.class);
        intent.putExtra("id", v.getTag());
        startActivity(intent);
    }    
}
于 2012-09-20T14:24:05.557 に答える