2012-06-21 2 views
0

я динамически добавлять макет в соответствии с определенным размером массива, который изменяется каждый раз, как показано ниже:андроид действия OnClick для динамически добавлены ImageButton из макета

for(int i = 0; i < topps.size(); i++) 
    { 
     lr1 = new LinearLayout(Main.this); 
     lr1.setOrientation(LinearLayout.VERTICAL); 
     scrool.addView(lr1); 

     final View child = getLayoutInflater().inflate(R.layout.tops_data, null); 
     red = (TextView)child.findViewById(R.id.topp_detail_red_txt); 
     black = (TextView)child.findViewById(R.id.topp_detail_black_txt); 

     use = (ImageButton)child.findViewById(R.id.imageButton2); 
     use.setOnClickListener(new View.OnClickListener() 
     { 
     @Override 
     public void onClick(View v) 
     { 
       if(bgh == false) 
      { 
Toast.makeText(this, "btn1 is "+child.getId(), Toast.LENGTH_SHORT).show(); 
      use.setBackgroundResource(R.drawable.tick_unsel); 
      } 
      else if(bgh == true) 
      { 
Toast.makeText(this, "btn1 is "+child.getId(), Toast.LENGTH_SHORT).show(); 
        use.setBackgroundResource(R.drawable.tick_select); 
       } 
     } 
     }); 
     lr1.addView(child); 
     child.setId(main_cnt); 
     use.setId(main_cnt); 

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

Изображение кнопки не меняется в соответствии с состоянием, но тосты правильно печатаются. Например:

Если у меня есть 5 просмотров, когда я нажимаю кнопку 3-го представления, тост отображается корректно с помощью setId, но изображение изменяется только в 5-м представлении.

Как правильно изменить изображение в каждом представлении?

ответ

1

должны попробовать ............

v.setImageResource(R.drawable.tick_select); 

или

v.setBackgroundResource(R.drawable.tick_select);

вместо

use.setBackgroundResource(R.drawable.tick_select); 
+0

нет, это не работает .... –

+0

@SivaK: если он не работает, то и не может сделать связывание с помощью 'setOnTouchListener' вместо Ф.О.' setOnClickListener' –

+0

@imran хан onclicklistener работает, но фоновое изображение не меняется , я получаю тост. msg –

0

Вам нужно создать новый экземпляр вашего ImageButton на каждой итерации.

Заменить: use = (ImageButton) child.findViewById (R.id.imageButton2);

К: ImageButton use = (ImageButton) child.findViewById (R.id.imageButton2);

Смежные вопросы