2016-07-07 2 views
1

Je crée une ligne dynamique et j'ajoute cette ligne dans la disposition de la table. Pendant la création de la ligne, la valeur de chaque textView est définie. Mais nous avons un problème sur la définition de la valeur sur l'écouteur de clic de chaque élément de ligne. En fait, nous avons deux textView à l'intérieur de chaque ligne et onclick de la première vue de texte, nous ouvrons le sélecteur de données. donc je veux mettre la date à textview.Comment définir dynamiquement la valeur de l'élément de ligne dans Table Layout dans android?

tableLayout = (TableLayout) dialog.findViewById(R.id.tableLayout_popup); 
View tableRow = LayoutInflater.from(MileStoneActivity.this).inflate(R.layout.cdd_popup1st_row, null, false); 
       tableLayout.addView(tableRow); 
      for (int i = 0; i < masterDataList.size(); i++) { 
       /* if (i == 0) { 
        View tableRow = LayoutInflater.from(MileStoneActivity.this).inflate(R.layout.cdd_popup1st_row, null, false); 
        tableLayout.addView(tableRow); 

       } else {*/ 
       final View tableRow1 = LayoutInflater.from(MileStoneActivity.this).inflate(R.layout.cdd_popup_row, null, false); 
         tableRow1.setId(i); 
        tv1 = (TextView)tableRow1.findViewById(R.id.textView24); 
        tv2 = (TextView)tableRow1.findViewById(R.id.textView25); 
        tv2.setId(i); 
        tv1.setText(masterDataList.get(i).getLineItemNumber()); 
        tv2.setText((masterDataList.get(i).getRequestedDeliveryDate())); 

       tv2.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         rowNumber = tableRow1.getId(); 


         new DatePickerDialog(MileStoneActivity.this, date, myCalendar 
           .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), 
           myCalendar.get(Calendar.DAY_OF_MONTH)).show(); 

         // dialog.dismiss(); 


         // } 

        } 
       }); 

        tableLayout.addView(tableRow1); 

Ceci est mon sélecteur de date listner: MyCalendar = Calendar.getInstance();

   final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() { 

        @Override 
        public void onDateSet(DatePicker view, int year, int monthOfYear, 
              int dayOfMonth) { 
         // TODO Auto-generated method stub 
         myCalendar.set(Calendar.YEAR, year); 
         myCalendar.set(Calendar.MONTH, monthOfYear); 
         myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
         updateLabel(); 
        } 

       }; 

i n'a pas réussi à mettre en valeur le texte de TV2. Je veux changer la valeur de la ligne particulière qui a été cliquée. Merci de m'aider. toute aide serait appréciée à l'avance.

Répondre

0

Je ne sais pas si je vous ai bien compris, mais vous pouvez faire en sorte que la méthode date l'auditeur. Dans la méthode, passez le paramètre tv2 en paramètre, puis updateLabel avec ce paramètre.

private DatePickerDialog.OnDateSetListener getDate(final TextView tv){ 
    return new DatePickerDialog.OnDateSetListener() { 

        @Override 
        public void onDateSet(DatePicker view, int year, int monthOfYear, 
              int dayOfMonth) { 
         // TODO Auto-generated method stub 
         myCalendar.set(Calendar.YEAR, year); 
         myCalendar.set(Calendar.MONTH, monthOfYear); 
         myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
         updateLabel(tv); 
        } 

       }; 
} 

faire alors ce dans le constructeur DatePicker:

new DatePickerDialog(MileStoneActivity.this, getDate(tv2), myCalendar 
           .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), 
           myCalendar.get(Calendar.DAY_OF_MONTH)).show(); 
+0

Thx pour votre réponse. mais comment puis-je savoir quelle ligne tv2 textView appartiennent à – Anand

+0

@Anand Passant à la télévision, vous pouvez obtenir le parentView, ce sera la ligne – user6547359

+0

il va définir la valeur de la dernière ligne textview, ligne désirée – Anand