2012-09-03 21 views
1

我有10個LinearLayouts如何識別每個的LinearLayout,所以這是的onclick我需要在它如何從十linearlayouts確定的線性佈局的Android

下面執行一些動作的代碼

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



    } 

點擊線性佈局上的事件,每次都會產生相同的對象。我怎麼可以互相

回答

1

您可以將id提供給每個線性佈局,並在點擊時在佈局中寫入一個大寫字母。

+0

是通過爲每個線性佈局賦予id來實現。謝謝 ! – Badrinath

0

distinguih您可以用開關的情況下識別您的佈局,像這樣:

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

而且你可以設置實現你的活動範圍內的OnClickListener而不是爲每個視圖一個新的。

但是,由於您在for循環中膨脹了相同的佈局,因此無法在不修改視圖ID的情況下區分佈局。所以調用view.setId(i)也可能有所幫助。

嘗試使用ListView代替並實現適配器的OnItemClickListener

+0

我編輯了代碼作爲評論,但他們不能得到它。請參閱編輯的代碼 – Badrinath

+0

@Badrinath請查看我的編輯關於id的設置。這可以幫助你解決問題。 – keyboardsurfer

+0

我需要在rel =(RelativeLayout)inflater.inflate(R.layout.reuse,null)後設置rel.setId(i); ,在這個變化之後得到想要的結果。謝謝 – Badrinath