Проблема с кнопкой Android - PullRequest
       6

Проблема с кнопкой Android

0 голосов
/ 16 февраля 2011

Я создаю приложение, которое генерирует кнопки в соответствии со значением, введенным пользователем. каждая кнопка имеет свою собственную функцию, определенную в XML. Теперь моя главная проблема - как сократить эти коды.

name[0].setClickable(true);
    name[0].setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            name[0].setText("kjghjbjhb");
        }
    });
    name[2].setClickable(true);
    name[2].setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            name[2].setText("kjghjbjhb");
        }
    });name[1].setClickable(true);
    name[1].setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            name[1].setText("kjghjbjhb");
        }
    });

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

Ответы [ 2 ]

3 голосов
/ 16 февраля 2011

Как то так?

createButton(int i){
        name[i].setClickable(true);
        name[i].setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                name[i].setText("kjghjbjhb");
            }
        });
    }

С помощью этого метода вы также можете создать цикл for:

for (int i = 0; i<name.length; i++){
        createButton(i);
    }
0 голосов
/ 16 февраля 2011

Ну, вы видите, что это легко.

Здесь я указываю шаги, которые должны быть выполнены.

  1. Вы должны создавать кнопки с помощью новой кнопки ();просто сохраните ссылку в коллекции, скажем ArrayList

ArrayList ar = new ArrayList ();

Button b1 = new Button ();ar.add (b1);

  1. Теперь создайте закрытый внутренний класс, который реализует View.OnClickListener.Теперь согласно правилам реализуйте OnClick (), и поэтому материал, который вы хотите сделать там,

, класс A расширяет Activity {// ваши вещи здесь для OnCreate и другой бизнес-логики

закрытый конечный класс MyListener реализует View.OnClickListener {

    public void onClick(View v) {
        // TODO Auto-generated method stub
        v.setText("kjghjbjhb");
    }

} ​​

}

Обратите внимание, что я устанавливаю текст со ссылкой на объект v в onClick.Также сделайте этот класс синглтоном.

  1. Теперь установите создание экземпляра этого класса (так как MyListerner будет синглтоном, которым будет один объект) в setOnClickListener (), как это

MyListener listener = MyListener.getInstance ();b.setOnClickListener (listener);

Вы можете выбрать этот способ, когда кнопки создаются для какого-либо события или действия пользователя.В случае, если вам нужно создать кнопки в цикле, вы можете использовать 1-й и 3-й шаг в цикле.

Надеюсь, это вам пригодится.

...