2016-07-07 6 views
1

Я создаю динамическую строку и добавляю эту строку в макет таблицы. Во время создания строки устанавливается значение каждого textView. Но у нас возникает проблема с установкой значения на клик-слушателе каждого элемента строки. Фактически у нас есть два текстовых элемента внутри каждой строки и onclick первого текстового вида, который мы открываем сборщик данных. поэтому я хочу, чтобы значение даты отображалось в textview.Как установить значение строки в таблице Layout динамически в 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); 

Это мой выбор даты у слушателя: 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(); 
        } 

       }; 

Мне не удалось установить текстовое значение tv2. Я хочу изменить значение конкретной строки, которая была нажата. Пожалуйста, помогите мне. любая помощь будет оценена в продвинутом виде.

ответ

0

Я знаю, правильно ли я прав, но вы можете сделать дату методом, возвращающим слушателя. В методе передайте параметр tv2 как параметр, а затем updateLabel с этим параметром.

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

       }; 
} 

Тогда сделайте это в DatePicker конструктору:

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

Thx для ответа. но как я могу узнать, какая строка tv2 textView принадлежит – Anand

+0

@Anand Передавая телевизор, вы можете получить parentView, который будет строкой – user6547359

+0

, он установит значение последнего текстового просмотра строки, а не нужную строку. – Anand