android onclick动作,用于从布局中动态添加Imagebutton

时间:2012-06-21 10:12:00

标签: android android-inflate

我根据特定的数组大小动态添加布局,每次都会变化,如下所示:

    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);

在上面的代码中,一切正常,根据数组大小列出视图数量,我得到每个视图的按钮ID。

按钮图像不会根据条件而改变,但是烤面包正确打印。例如:

如果我有5个视图,当我点击第3个视图的按钮时,toast与setId一起正确显示,但图像仅在第5个视图中被更改。

如何在每个视图中正确更改图像?

2 个答案:

答案 0 :(得分:1)

应该尝试............

v.setImageResource(R.drawable.tick_select);

v.setBackgroundResource(R.drawable.tick_select);

而不是

use.setBackgroundResource(R.drawable.tick_select);

答案 1 :(得分:0)

您需要在每次迭代时创建ImageButton的新实例。

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

通过: ImageButton使用=(ImageButton)child.findViewById(R.id.imageButton2);