2011-07-19 13 views
7

¿Cómo obtener ID de Vistas que se agregan dinámicamente en el diseño?Obtener ID para las vistas que se agregan dinámicamente

public class Display 
    { 

     static int i; 
     Dynamic_UIActivity dyn; 
     private Context context; 
     View mField= null; 
     TextView text; 
     protected int mYear; 
     protected int mMonth; 
     protected int mDay; 
     LinearLayout ll; 
     Mynewdialog dialognew; 

     public Display(Context mcontext) 
     { 
      context=mcontext; 
      ll = new LinearLayout(mcontext); 
      ll.setOrientation(LinearLayout.VERTICAL); 
      dyn = new Dynamic_UIActivity(); 
     } 

     public void addLabel(String text) 
     { 
     TextView textview = new TextView(context); 
     textview.setText(text); 
     ll.addView(textview);  
     } 

     public void addField(String Type,String Tag) 
     { 
      mField.setId(i); 
      i++; 
      if(Type.equalsIgnoreCase("text")) 
      { 
       mField= new EditText(context); 
       mField.setTag(Tag); 
       //int id = mField.getResources().getIdentifier((String) mField.getTag(),"id" ,dyn.getPackageName()); 
       //EditText edit = (EditText)mField.findViewById(1); 
       ll.addView(mField); 
      } 
      if(Type.equalsIgnoreCase("datepicker")) 
      { 
       mField=new EditText(context); 
       ((EditText) mField).setText("Pick Date"); 
       ll.addView(mField); 
       mField.setOnClickListener(new View.OnClickListener() 
       { 
        @Override 
        public void onClick(View v) 
        { 
         dialognew = new Mynewdialog(context); 
         dialognew.dialog_obj((EditText) mField); 
        } 
       }); 
      } 
     } 

     protected DatePickerDialogWithEditText.OnDateSetListener mdatepickerdialog = new DatePickerDialogWithEditText.OnDateSetListener() 
     { 
      public void onDateSet(DatePicker view , int year , int month, int date) 
      { 
        mYear = year; 
        mMonth = month; 
       mDay = date; 
       dialognew.showdialogtext(); 

      } 
     }; 
    } 

    class DatePickerDialogWithEditText extends DatePickerDialog 
    { 
     EditText tv;  

     DatePickerDialogWithEditText(Context c, OnDateSetListener oD, int y, int m, int d, EditText tv) 
     { 
      super(c, oD, y, m, d); 
      this.tv = tv; 
     } 

     EditText getAssociatedTextView() 
     { 
      return tv; 
     } 
    } 


     class Mynewdialog 
    { 
     private Context context; 
     Display dis = new Display(context); 
     private DatePickerDialogWithEditText dialog; 

     public Mynewdialog(Context mcontext) 
     { 
      context=mcontext;  
     } 

     public void dialog_obj(EditText editTextView) 
     { 
      final Calendar cal = Calendar.getInstance(); 
      dis.mYear = cal.get(Calendar.YEAR); 
      dis.mMonth = cal.get(Calendar.MONTH); 
      dis.mDay = cal.get(Calendar.DAY_OF_MONTH); 
      dialog = new DatePickerDialogWithEditText(context, dis.mdatepickerdialog, dis.mYear, dis.mMonth, dis.mDay, editTextView); 
      dialog.show(); 
     } 

     public void showdialogtext() 
     { 
      EditText et = dialog.getAssociatedTextView(); 
      et.setText(new StringBuilder().append(dis.mDay).append("-").append(dis.mMonth).append("-").append(dis.mYear)); 
     } 
     } 

ahora quiero Configure el ID de los puntos de vista que recibo mediante la comprobación de su tipo? ¿Cómo puedo hacer eso?

+0

ahora ¿cómo puedo obtener y configurar el ID de las vistas que he agregado en el tiempo de ejecución? – Geetanjali

+0

Cualquiera ayúdeme ... – Geetanjali

+0

usando los módems setid y getid – user840621

Respuesta

11

Puede hacerlo utilizando los métodos getId() y setId() de la Vista.

Por ejemplo:

TextView txtView = new TextView(this); 
txtView.setId(4); 

y se puede obtener el ID mediante el uso de getId método():

txtView.getId(); 
+3

como nota al margen, las vistas creadas dinámicamente (a través del código) inicialmente don ' t tiene un conjunto de identificación. Tiene que llamar explícitamente a setId() para darle a una vista un Id. – MrJre

+0

¿Qué pasa si no conocemos el tipo de vista? ¿Entonces cómo podemos establecer un ID particular – Geetanjali

+0

@MrJre tuve ya lo mencioné como setId (4) para el ejemplo. –

1

o puede agregar todas vistas (creadas dinámicamente) en un ArrayList y luego el acceso eso.

Cuestiones relacionadas