Создание текстов и кнопок со слушателями последовательно? - PullRequest
0 голосов
/ 15 ноября 2011

Я постараюсь объяснить мою проблему. Приведенный ниже код, как вы видите, пытается добавить некоторые текстовые представления и кнопки, когда массив получен из другого класса.

public class Breakfast extends Activity {

    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Bundle extras = getIntent().getExtras();

        ScrollView sv = new ScrollView(this);
        LinearLayout ll = new LinearLayout(this);
        sv.addView(ll);
        if (extras != null) {

             String food[]=extras.getStringArray("food");       
             String foodCateg[]=extras.getStringArray("foodCateg");

             int K=0;

             for (int i = 0; i < food.length/3; i++) {
                 TextView foodDay = new TextView(this);
                 foodDay.setText("Day "+ (i+1));    
                 ll.addView(foodDay);

                 for (int j=K;j<K+3;j++){
                     Button contfood= new Button(this);
                     contfood.setText(food[j]);
                     ll.addView(contfood);
                 }
                 K=K+3;         
             }
             this.setContentView(sv);
         }
    }

Мой вопрос: как я могу узнать, какие из этих кнопок нажимаются на экране? Потому что в случае нажатия одной из них (получения текста, который уже был написан ранее), я сделаю что-то или другое.


ахххххххххххххххх да, я знаю, как сделать ListActivity. Но сначала я думаю делать это вручную, потому что не думаю, что это можно упростить ...

Спасибо за ответы на попытку построить из списка все, а затем метод OnListItemClick, но я думаю, что это не решение.

Я сказал это, потому что, когда я, например, вставляю день (я не помещаю, слышу весь код ...), но я делаю .setgravity .setSize .setbackgroundResource и т. Д. .setgravity и другие параметры. Поэтому я думаю, что с listview все будет иметь те же характеристики ... и это то, что мне не нравится.

чтобы ... узнать, какая кнопка нажимается на экране?

Ответы [ 2 ]

1 голос
/ 15 ноября 2011

Вы можете использовать contfood.setId(i) и продолжить свой путь оттуда.

Но то, что вы делаете, похоже, вы действительно хотите создать ListActivityи используйте это OnItemClickListener.

0 голосов
/ 21 ноября 2011

Что вам нужно сделать, это поставить id для каждой кнопки "contfood". А затем, когда вы нажимаете на кнопку, возвращаете идентификатор, чтобы выполнить желаемое действие.

Другой способ - создать кнопку и прикрепить метод public void onClick (View view):

for (int j=K;j<K+3;j++){
                 Button contfood= new Button(this);
                 contfood.setText(food[j]);
                 ll.addView(contfood);

                public void onClick(View view) {
                    Intent myIntent = new Intent(view.getContext(), xxx.class);
                    startActivityForResult(myIntent, 0);
          }
}

и добавьте параметры в метод.

...