我的工作环境是
Eclipse heliose,Android 1.6
我已经创建了一个tableLayout,其中列和行已成功添加,每个单元格都有一个textView和一个EditText,我在访问每个单元格时遇到问题,需要在单元格内的每个editText中添加addTextChangedListener.所以我需要将英文文本更改为指示文本.请提出解决方案
/** * 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); 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); 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 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); } }