2012-09-25 26 views
10

Tôi đang thêm chế độ xem con vào Bố cục tuyến tính. Bản thân trẻ có một số lượt xem văn bản và số lần xem trong một Relativelayout. Chế độ xem con được thêm động trong LinearLayout khi nhấp vào nút. Ngay bây giờ tôi có thể thêm khung nhìn con như thể hiện trong pic này. http://dl.dropbox.com/u/50249620/SC20120926-031356.png những gì tôi phải làm là xác định duy nhất chế độ xem con nào đã được nhấp để hiển thị các hành động thích hợp. Mã của tôi, nơi tôi đang thêm chế độ xem con.Làm cách nào để nhận được ID của chế độ xem con được nhấp vào được thêm động vào LinearLayout?

addButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 


       customView1 = inflater.inflate(R.layout.people, null); 

       peopleName = (TextView) customView1.findViewById(R.id.peopleName); 

       peopleName.setText(autoComplete.getText()); 
       customView1.setId(peopleInvitedRelativeLayout.getChildCount() + 1); 

       params4 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 

       customView1.setLayoutParams(params4); 
       peopleInvitedRelativeLayout.addView(customView1, params4);    

      } 
     }); 

Mọi trợ giúp hoặc đề xuất sẽ được đánh giá cao. Cảm ơn.

+0

Làm thế nào về liên kết này? http://stackoverflow.com/questions/7807058/get-child-view-in-a-relativelayout – flashsnake

+0

'view.getId()'? – kcoppock

+0

Tôi có thể lấy id nếu tôi biết chỉ mục của chế độ xem con trong LinearLayout mẹ, nhưng tôi không thể lấy chỉ mục của con được người dùng nhấp vào. – hshed

Trả lời

13

Bạn có thể thêm một thẻ tùy chỉnh cho bất kỳ quan điểm đơn giản bằng cách làm như sau khi bạn tạo cái nhìn

view.setTag(Object o); 

sau đó trong các OnClickListener tìm tag với

view.getTag() 

setTag(Object o) sẽ chấp nhận bất kỳ loại đối tượng có thể là một chuỗi, int hoặc lớp tùy chỉnh

EDIT

addButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 


      customView1 = inflater.inflate(R.layout.people, null); 

      peopleName = (TextView) customView1.findViewById(R.id.peopleName); 

      peopleName.setText(autoComplete.getText()); 
      customView1.setId(peopleInvitedRelativeLayout.getChildCount() + 1); 

      params4 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 

      customView1.setLayoutParams(params4); 
      peopleInvitedRelativeLayout.addView(customView1, params4); 

      //add a tag to a view and add a clicklistener to the view 
      customView1.setTag(someTag); 
      customView1.setOnClickListener(myClickListner); 



     } 
    }); 

các clicklistener - tạo một biến lớp cho nó

OnClickListener myClickListener = new onClickListener(){ 
    @Override 
    public void onClick(View v) { 

     if(v.getTag() == someTag){ 
      //do stuff 
     }else if(v.getTag() == otherTag){ 
      //do something else 
     } 
    } 
+0

Khi tôi sử dụng customview1.setonclicklistener ....., customview1 là null, bởi vì nó đã được thổi phồng trong button.setonclicklistener. Và vì lý do đó, tôi không thể xác định xem chế độ xem con nào đã được nhấp. – hshed

+0

Sau đó, thêm onClickListener vào customView1 trong addButton onClickListener, tôi sẽ chỉnh sửa câu trả lời của mình với các chi tiết khác. – triggs

+0

Cảm ơn sự giúp đỡ của bạn. Nó dường như được làm việc. Tôi đã sử dụng OnLongClickListener. Tôi phải hiển thị menu ngữ cảnh khi nhấp vào một mục dài. Một trong các mục trình đơn ngữ cảnh phải xóa mục được nhấp, mục này không hoạt động với mã của tôi. Giả sử tôi phải loại bỏ mục đầu tiên công khai boolean onContextItemSelected (mục MenuItem) { nếu (item.getTitle() == "Action 1") { peopleInvitedRelativeLayout.removeViewAt (0); } else {return false;} trả về true; } trong đó Hành động 1 là mục menu ngữ cảnh. điều removeView không hoạt động. – hshed

Các vấn đề liên quan