1

我有 10 个线性布局如何识别每个线性布局,所以我需要对它执行一些操作

下面是代码

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



    }

线性布局上的点击事件每次都会产生相同的对象。我怎样才能彼此区分

4

2 回答 2

1

您可以将 id 赋予每个线性布局,并在单击时在布局中编写一个案例来获取 ID。

于 2012-09-03T10:42:55.217 回答
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

于 2012-09-03T10:41:13.867 回答