Reputation: 161
first post please be gentle...
This code creates a table 10 x 10 full of hyphens in textviews simples...
With the onClickListner I need it to change the colour if the text of the one clicked.
it fails on tv.setTextColor(Color.RED);
can be sorted or is there a better way??
Thanks.
_Temp class:
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");
}
}
and 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: OK that was too easy... how about from an inflator!!
so, click an item in the table inflator popup, pick colour and click "Choose Colour" button, update colour of the hyphen clicked.
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); // <--- ????
}
Upvotes: 1
Views: 746
Reputation: 1643
The clicked View is your TextView, so you just have to set his color on your listener :
public void onClick(View v) {
((TextView) v).setTextColor(Color.RED);
}
Upvotes: 3