2012-06-08 7 views
1

первый пост, пожалуйста, быть нежным ...Android динамический OnClick

Этот код создает таблицу 10 х 10 полный дефисов в TextViews Simples ...

С onClickListner мне это нужно, чтобы изменить цвет, если текст одного щелчка.

он терпит неудачу на tv.setTextColor(Color.RED);

может быть отсортирован или есть лучший способ ??

Спасибо.

_Temp класс:

public class _Temp extends Activity implements OnClickListener { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.a_temp); 


    TableLayout treeTable = (TableLayout) findViewById(R.id.main_table); 

    // Add 10 Rows/10 Cols ~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    int idxCount = 0; 

    for (int tree = 1; tree <= 10; tree++) { 
     idxCount = 0; 

     TableRow TableRows = new TableRow(this); 
     TableRows.setId(tree * 100 + idxCount); 
     TableRows.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
     TableRows.setBackgroundColor(Color.LTGRAY); 
     idxCount++; 

     for (int bird = 1; bird <= 10; bird++) { 
      TextView label_TableCols2 = new TextView(this); 
      label_TableCols2.setId(tree * 100 + idxCount); 
      label_TableCols2.setBackgroundColor(Color.DKGRAY); 
      label_TableCols2.setClickable(true); 
      label_TableCols2.setOnClickListener(this); 

      label_TableCols2.setText("-"); 

      TableRows.addView(label_TableCols2); // add the column to the table row 
      idxCount++; 
     } 
     treeTable.addView(TableRows, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
    } 
} 

public void onClick(View v) { 
    Log.i("scoreTable", "Something Clicked - ID = " + Integer.toString(v.getId())); 

    int resId = getResources().getIdentifier(Integer.toString(v.getId()), "id", getPackageName()); 

    Log.i("scoreTable", "Colour Update 1 - resId = " + Integer.toString(resId)); 

    TextView tv = (TextView) findViewById(resId); 

    Log.i("scoreTable", "Colour Update 2 - Just to see if it gets this far"); 

    tv.setTextColor(Color.RED); 

    Log.i("scoreTable", "Colour Update 3 - Just to see if it gets this far"); 
} 
} 

и a_temp.xml

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <HorizontalScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" > 

       <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" > 

      <TableLayout 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       android:id="@+id/main_table" 
       android:layout_width="match_parent" 
       android:layout_height="fill_parent" > 

      </TableLayout> 

     </LinearLayout> 

    </HorizontalScrollView> 

</ScrollView> 

Edit: ОК, что было слишком легко ... как насчет от инфлятором !!

так, щелкните элемент в всплывающем окне инфлятора таблицы, выберите цвет и нажмите кнопку «Выбрать цвет», обновите цвет дефиса.

public void onClick(View v) { 
    ((TextView) v).setTextColor(Color.RED); // <--- SWEET, WORKING 

    AlertDialog.Builder PopUpBuilder = new AlertDialog.Builder(this); 

    //... 

    PopUpBuilder.setPositiveButton("Choose Colour", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 

      // Do stuff and store global variables 

      updateTable(); 
     } 
    }); 
    AlertDialog PopupDialog = PopUpBuilder.create(); 
    PopupDialog.show(); 
} 

public void updateTable() { 

    TextView scoreTableTitle = (TextView) findViewById(R.id.textTitle1); 
    scoreTableTitle.setText("woo woo"); // <--- WORKING 

    ((TextView) v).setTextColor(Color.BLUE); // <--- ????   
} 

ответ

3

момент щелчка View ваш TextView, так что вы просто должны установить его цвет на вашем слушателю:

public void onClick(View v) { 
    ((TextView) v).setTextColor(Color.RED); 
} 
+0

Perfect, быстрый, WOW – Sparki

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