Способ установки onClickListener () - PullRequest
1 голос
/ 22 ноября 2011

Я создал объект ImageView (img) и передал некоторые ресурсы через тот же объект (img) в линейный макет с for-loop .На каждой итерации цикла я вызываю setOnClickListener () для img (img.setOnClickListener()), чтобы отобразить Toast, который отражает значение переменной контроллера цикла ( i ).Сегмент кода, который я попробовал, приведен ниже:

for (i = 1; i <= 6; i++) 
              {

    img = new ImageView(this);

    img.setImageResource(R.drawable.thambu);

    body.addView(img);



    this.img.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {


    Toast.makeText(Details.this, Integer.toString(i) , Toast.LENGTH_LONG).show();


                }
            });

        }

Дело в том, что всякий раз, когда я нажимаю на генерируемые изображения, у меня отображается тост 7.

Я знаю, почему его отображается 7.но я хочу отобразить индекс изображения, по которому щелкают.

( body - это идентификатор линейного макета, на котором я передаю ImageView)

КакМогу ли я сделать это на Android.Заранее спасибо.

Ответы [ 2 ]

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

На самом деле, это довольно общий вопрос Java.

Вы должны сделать что-то вроде следующего:

for (int i = 1; i <= 6; i++) {

  img = new ImageView(this);

  img.setImageResource(R.drawable.thambu);

  body.addView(img);


  final int j = i;
  this.img.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
      Toast.makeText(Details.this, Integer.toString(j) , Toast.LENGTH_LONG).show();
    }
  });
}
1 голос
/ 22 ноября 2011
for (i = 1; i <= 6; i++) 
              {

    img = new ImageView(this);

    img.setImageResource(R.drawable.thambu);

    body.addView(img);
    img.setTag(i);



    this.img.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
        int tagInt = (int) v.getTag();

    Toast.makeText(Details.this, Integer.toString(tagInt) , Toast.LENGTH_LONG).show();


                }
            });

        }

попробуйте, я использовал теги ..

...