初投稿 お手柔らかに…
このコードは、textviews simples にハイフンでいっぱいの 10 x 10 のテーブルを作成します...
onClickListner を使用すると、テキストがクリックされた場合に色を変更する必要があります。
失敗するtv.setTextColor(Color.RED);
ソートできますか、それとももっと良い方法がありますか??
ありがとう。
_一時クラス:
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>
追記: 簡単すぎました… 空気入れからいかがでしょうか!!
そのため、テーブル インフレータ ポップアップのアイテムをクリックし、色を選択して [Choose Colour] ボタンをクリックし、クリックしたハイフンの色を更新します。
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); // <--- ????
}