2016-12-05 21 views
0

В моем приложении i'am устанавливается каждая строка таблицы в коде.Таблица таблиц Android

код настройки строки

  final TableRow row = new TableRow(context); 
      row.setBackgroundResource(R.drawable.layer_nw); 
      row.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, 150)); 
      row.setMinimumHeight(100); 
      //tr.addView(view); 
      String[] colText = {"" + outlet_name, "" + outlet_qty, "" + outlet_price, "" + outlet_tot}; 
      for (String text : colText) { 
       TextView tv = new TextView(this); 
       //EditText ev=new EditText(this); 

       tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,150)); 
       tv.setGravity(Gravity.CENTER); 
       tv.setTextSize(14); 

      // tv.setTextColor(Integer.parseInt("#D3D3D3")); 

       tv.setText(text); 

       row.addView(tv); 

      } 
      tableLayout.addView(row); 

в этой строке я хочу вторую ячейку, то есть «outlet_qty», как редактировать текст и все другие, как textview.each переменных массива в «colText» получает свое значение от Sqlite .. есть ли способ получить помощь? PLS help

+0

Как вы знаете, позиция столбца outlet_qty 1 в массиве, поэтому вы можете использовать статическое условие для этого напрямую. Проверьте ответ, полученный от readyandroid. –

ответ

0

Это все, чтобы управлять TextView и EditText для определенного номера столбца. вы можете управлять вводом данных из sqlite, как вы делаете то же самое.

final TableRow row = new TableRow(context); 
     row.setBackgroundResource(R.drawable.layer_nw); 
     row.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, 150)); 
     row.setMinimumHeight(100); 
     //tr.addView(view); 
     String[] colText = {"" + outlet_name, "" + outlet_qty, "" + outlet_price, "" + outlet_tot}; 
     for (int i = 0; i < colText.length; i++) { 
      EditText ev = new EditText(this); 
      TextView tv = new TextView(this); 
      if (i == 1) {//For outlet_qty 
       ev.setId(i); 
       ev.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, 150)); 
       ev.setGravity(Gravity.CENTER); 
       ev.setTextSize(14); 
       // ev.setTextColor(Integer.parseInt("#D3D3D3")); 
       ev.setText(colText[i]); 
       ev.addTextChangedListener(new TextWatcher() { 
        @Override 
        public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

        } 

        @Override 
        public void onTextChanged(CharSequence s, int start, int before, int count) { 
         if (s.length() > 0) { 
          ((TextView) row.findViewById(Integer.valueOf(3))).setText(s.toString().trim()); 
         } else { 
          ((TextView) row.findViewById(Integer.valueOf(3))).setText(""); 
         } 
        } 

        @Override 
        public void afterTextChanged(Editable s) { 

        } 
       }); 
       row.addView(ev); 
      } else { 
       tv.setId(i); 
       tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, 150)); 
       tv.setGravity(Gravity.CENTER); 
       tv.setTextSize(14); 
       // tv.setTextColor(Integer.parseInt("#D3D3D3")); 
       tv.setText(colText[i]); 
       row.addView(tv); 
      } 
     } 
     tableLayout.addView(row); 
+0

thank u Ready Android ..... – c0der

+0

есть ли способ обновить текстовое представление 'outlet_tot' в ответ на изменение значения edittext .. я сделал часть 'ev.addTextChangedListener' и вычислил общую сумму, которую нужно отобразить, и сохранил ее в sqlite db .. при перезапуске приложения новая общая сумма отображается в текстовом виде «outlet_tot». Как обновить значение textview в «ev.addTextChangedListener», чтобы он отображался без перезапуска приложения ? – c0der

+0

проверить обновленный ответ для прослушивателя смены текста в редакторе. Если это сработает для вас, пожалуйста, подтвердите ответ. –

0

попробуйте это. В цикле for, где вы перебираете столбцы, мы проверяем, является ли colum значением output_qty. если мы сопоставим столбец outlet_qty, добавим текст Edit. А для всех остальных мы добавляем текстовые представления.

  final TableRow row = new TableRow(context); 
      row.setBackgroundResource(R.drawable.layer_nw); 
      row.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, 150)); 
      row.setMinimumHeight(100); 
      //tr.addView(view); 
      String[] colText = {"" + outlet_name, "" + outlet_qty, "" + outlet_price, "" + outlet_tot}; 
      // iterate over colunms 
      for (String text : colText) { 

       // add edit text for outlet_qty column 
       if(text.equals(outlet_qty)) 
       { 
        EditText editText = new EditText(this); 
        // do stuff with the edit text like prefilling data etc 
        row.addView(tv); 
       } 
       // for all others we add text views 
       else 
       { 
       TextView tv = new TextView(this); 
       //EditText ev=new EditText(this); 

       tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,150)); 
       tv.setGravity(Gravity.CENTER); 
       tv.setTextSize(14); 

      // tv.setTextColor(Integer.parseInt("#D3D3D3")); 

       tv.setText(text); 

       row.addView(tv); 
       } 

      } 
      tableLayout.addView(row); 
+1

@Aidin отредактировал ответ с комментариями. – Vall0n

+0

no..its не работает ... – c0der

 Смежные вопросы

  • Нет связанных вопросов^_^