如何从android中的十个linearlayout识别线性布局

时间:2012-09-03 10:34:42

标签: android android-linearlayout

我有10个LinearLayouts如何识别每个线性布局,以便点击我需要对其执行某些操作

以下是代码

@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.item);


    newsLayout =(LinearLayout)findViewById(R.id.newsLayout);        

        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      RelativeLayout rel=null;
        for(int i=0;i<images.size();i++){
            rel= new RelativeLayout(this);
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            rel.setId(i);
            rel = (RelativeLayout) inflater.inflate(R.layout.reuse,null);

            params.setMargins(0, 50, 0, 0);

             TextView fromWeb= (TextView) rel.findViewById(R.id.text);
             fromWeb.setText(headLines.get(i));
             newsLayout.addView(rel,params);



 rel.setOnClickListener(new RelativeLayout.OnClickListener() {
            public void onClick(View arg0) {   
                switch(arg0.getId())   { 

       case 1: Toast.makeText(DesignShape.this, "clicked"+arg0.getId(),           Toast.LENGTH_LONG).show();       
    break;     

 default: break; 
        }
    } 
});
    }



    }

在线性布局上的点击事件中,每次都会产生相同的对象。我怎么能彼此distinguih

2 个答案:

答案 0 :(得分:1)

您可以将ID提供给每个线性布局,并在点击布局中将案例写入getid。

答案 1 :(得分:0)

您可以使用如下所示的开关案例来识别您的布局:

public void onClick(View arg0) {
  switch(arg0.getId()):
    case R.id.layout1:
      Toast.makeText(DesignShape.this, "clicked"+arg0.getId(), Toast.LENGTH_LONG).show();
      break;
    default:
      break;
}

此外,您可以在Activity中设置OnClickListener,而不是为每个视图创建一个新的。

但是,由于您在for循环中为相同的布局充气,因此无法在不修改视图ID的情况下区分布局。所以调用view.setId(i)也可能有所帮助。

尝试使用ListView代替并实施适配器的OnItemClickListener