Cómo agregar editText.addTextChangedListener en TableLayout

Mi ambiente de trabajo es Eclipse heliose, Android 1.6

He creado un tableLayout con las columnas y las filas agregadas con éxito, cada célula tiene un textView y un EditText y tengo un problema en tener acceso a cada célula y necesito agregar addTextChangedListener a cada editText dentro de la célula. De modo que necesito cambiar el texto inglés al texto del indic. Sugerimos una solución

/** * Here we are going to define the grid The Grid has 1. grid's value in the * particular position 2. */ public void setGrid() { String questionNumber[] = null; Typeface fontface = Typeface.createFromAsset(getAssets(), "fonts/padmaa.ttf"); /* * Table layout for the crossword elements */ TableLayout tableLayout = (TableLayout) findViewById(R.id.crosswordTableLayout); tableLayout.setGravity(Gravity.TOP); tableLayout.setBackgroundColor(Color.WHITE); tableLayout.setScrollContainer(true); for (int i = 0; i < sizeOfGrid; i++) { /* * This table row params is used to set the layout params alone we * are not going to use this anywhere */ TableRow.LayoutParams tableRowParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); tableRowParams.setMargins(1, 1, 1, 1); tableRowParams.height = 30; tableRowParams.gravity = Gravity.TOP; /* * Defining the row element for the crossword */ TableRow tableRow = new TableRow(this); tableRow.setBackgroundColor(Color.WHITE); tableRow.setPadding(1, 0, 0, 0); tableRow.setGravity(Gravity.TOP); tableRow.setLayoutParams(tableRowParams); for (int j = 0; j < sizeOfGrid; j++) { /* * (1).Here we are defining headerTextView to set the clue * numbers. * 2).columnEditText = a edit text view used to get the user * i/p data */ TextView headerTextView = new TextView(this); columnEditText = new EditText(this); headerTextView.setGravity(Gravity.TOP); headerTextView.setTextSize(10); headerTextView.setEnabled(false); headerTextView.setHeight(30); headerTextView.setWidth(10); headerTextView.setTextColor(Color.BLACK); /* Override the edittext that has been created */ columnEditText = (EditText) getLayoutInflater().inflate(R.layout.tablexml, null); columnEditText.setHeight(30); columnEditText.setWidth(25); /* * LinearLayout to arrange the two text view in a vertical * position */ LinearLayout headerLinearLayout = new LinearLayout(tableRow.getContext()); headerLinearLayout.setOrientation(LinearLayout.VERTICAL); headerLinearLayout.addView(headerTextView); /* * LinearLayout to arrange the first Linearlayout and Edit text * in a horizontal position */ LinearLayout cellLinearLayout = new LinearLayout(tableRow.getContext()); cellLinearLayout.setOrientation(LinearLayout.HORIZONTAL); cellLinearLayout.addView(headerLinearLayout); cellLinearLayout.addView(columnEditText); /* * Here we are setting the table's vertical border by some * workaround methods */ cellLinearLayout.setLayoutParams(tableRowParams); /* * the column with complete black */ if (cellValueArr[i][j] == null) { columnEditText.setBackgroundColor(Color.BLACK); headerTextView.setBackgroundColor(Color.BLACK); headerTextView.setGravity(Gravity.TOP); tableRow.setBackgroundColor(Color.BLACK); columnEditText.setEnabled(false); } else { /* * column with values and question numbers */ tableRow.setBackgroundColor(Color.BLACK); if (quesNumArr[i][j] == null) { columnEditText.setBackgroundColor(Color.WHITE); headerTextView.setBackgroundColor(Color.WHITE); } else if (quesNumArr[i][j] != null) { /* * column without question number */ questionNumber = quesNumArr[i][j].split("~"); quesArrList.add(questionNumber[1]); headerTextView.setText(questionNumber[1]); headerTextView.setTextColor(Color.BLACK); headerTextView.setBackgroundColor(Color.WHITE); columnEditText.setBackgroundColor(Color.WHITE); } } columnEditText.setId(i); headerTextView.setId(i); /* add the linear layout to the row values */ tableRow.addView(cellLinearLayout); int childCount = tableRow.getChildCount(); System.out.println("Child Count ::" + childCount); LinearLayout linearChild = (LinearLayout) tableRow.getChildAt(columnEditText.getId()); colText = (EditText) linearChild.getChildAt(1); System.out.println("GET ID " + linearChild.getChildAt(1).getId()); colText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence seq, int start, int before, int count) { // TODO Auto-generated method stub if (seq.length() > 0 & before == 0) { final String charSequence = String.valueOf(seq); final String engChar = String.valueOf(seq.charAt(seq.length() - 1)); println("GUJ :: currentlatin ===> " + engChar + " :: charSequence ==>" + seq); // Method For Type Char List softList = conv.getSoftKeyPressForChar(engChar, getApplicationContext(), seq); charSeq = (String) softList.get(0); Typeface fontface1 = Typeface.createFromAsset(getApplicationContext().getAssets(), "fonts/padmaa.ttf"); colText.setTypeface(fontface1, Typeface.NORMAL); colText.setText(charSeq); // for placing the cursor position colText.clearFocus(); colText.requestFocus(); } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub System.out.println("AFTER TEXT CHANGE"); } }); } /* add the row values to the table layout */ tableLayout.addView(tableRow); } } 

    One Solution collect form web for “Cómo agregar editText.addTextChangedListener en TableLayout”

    No he mirado a través del código como un todo. Pero desde mi entendimiento inicial, usted puede hacerlo de cualquiera de estas maneras,

    1. Como alguien mencionó antes, vaya para una vista de cuadrícula. No pude hacer mucho de ese tema desde el último comentario a la pregunta, pero si es algún tema de desplazamiento, que podría haber intentado un margen de diseño de fondo a unos 5 dp, por lo que no se recortó (si eso es lo que quisiste decir)

    2. Continuando con la disposición de la tabla, crear TextWatcher () una vez y agregarlo secuencialmente en un bucle. Puede ser bueno, si puede setId, o setTag para cada elemento como, primero editText obtiene nombre, "editText1", luego, "editText2", etcétera. Así que en un bucle, puede acceder a cada elemento basado en el índice de bucle.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.