本帖最后由 geduo_83 于 2012-06-18 16:05:33 编辑

解决方案 »

  1.   

    relLayout = (RelativeLayout)findViewById(R.layout.relLayout);        
            for(int i=0;i<listBoxPoint.size();i++){
             BoxPoint boxPoint = listBoxPoint.get(i);
             BoxView boxView = new BoxView(this,boxPoint,255);
             boxView.setId(i);
             boxView.setTag(i);       
             relLayout.addView(boxView);
             boxView.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    Toast.makeText(getApplicationContext(), v.getTag()+"", Toast.LENGTH_SHORT).show();
    }
    });  
            }
      

  2.   

    会不会是因为加入的这么多View,大小,位置都一样,最后添加的那个在最上面,响应触摸时直接屏蔽了下面的View?试试把这些个View放置到不同的位置上去
      

  3.   

      我昨天也遇到跟楼主一样的问题  动态添加组件的同时为组件注册点击事件的时候 ,前面的事件触发的时候也是监听的最后一个控件。。  我想问问楼主还能想起来以前是怎么解决的么  ......   真心求助!
       Thanks
      

  4.   

    感觉可以用listview来实现动态增加记录的功能
      

  5.   

    如果用Listview  对性能会有影响  老大不让用Listview  必须用动态添加组件
      

  6.   

    这样:
    BoxView boxView[] = new BoxView[listBoxPoint.size()];
    relLayout = (RelativeLayout)findViewById(R.layout.relLayout);        
            for(int i=0;i<listBoxPoint.size();i++){
                BoxPoint boxPoint = listBoxPoint.get(i);
                boxView[i] = new BoxView(this,boxPoint,255);     
                relLayout.addView(boxView);
                boxView[i].setOnClickListener(this);  
            }让Activity类实现OnClickListner,然后再onClick方法里面判断是哪个boxView被点击了