テーブル「D」は、各行に4つのテキストビューがあります。私はonlicklistenerを設定し、それは動作します。私が望むのは、ユーザーがその行の任意のテキストビューを押して、テキストの背景がltgrayに変わることです。私は各テキストビューまたは行全体が設定されるかどうかを解決します。 ユーザーが押したテレビに関係なく、最後のtextviewだけがltgrayに設定されます。コードに基づいて私の前提は、コード内のxのインデックスによって各tvをonclick値に設定できるということです:しかし、それは動作しません。私は各textViewBにx?でアクセスします。このコードは、他の状況に合わせてtvBが設定されていることを示していますが、この新しい方法はすべてのテキストビューのテキスト背景を設定します。私は行の背景をしたくない。それは簡単で機能します。ボーダーだけが表示されます。私の必要性は、そのテーブル行のすべての4つのテレビのためのテキストの背景の変更です。事前に 感謝あなたを:すべてのコードで行わ動的にテキストビューの背景色を設定する
try {
for(int x=0 ; x<loopCount; x++){
TableRow.LayoutParams params = new TableRow.LayoutParams(headerCellsWidth[x + 1], LayoutParams.MATCH_PARENT);
params.setMargins(2, 2, 0, 0);
Log.d("Loadrunner", "info[x] " + x + " " + info[x]);
final TextView textViewB = this.bodyTextView(info[x]);
textViewB.setTextColor(0xFF000000);
tableRowForTableD.addView(textViewB, params);
//*************************************** Clickable cell
tableRowForTableD.setClickable(true);
tableRowForTableD.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//tableRowForTableD.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_bright));
textViewB.setBackgroundColor(Color.LTGRAY);
Toast.makeText(getContext(), "Item on aisle select/deselect", Toast.LENGTH_SHORT).show();
}
});
tableRowForTableD.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
//tableRowForTableD.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_bright));
Toast.makeText(getContext(), "Item on aisle Edit", Toast.LENGTH_SHORT).show();
return true;
}
});
//***************************************************************
}
} catch(Exception e){
e.printStackTrace();
}
その。 xmlやスタイルはありません。
問題:各ループにOnClickListenerを設定しています。ビューには1つのOnClickListenerしかないので、最後のものだけが機能します。解決策のヒント:各tableRowのテキストビューの配列を保持して、 – devnull69
@devnull行のクリックでこの配列をループすることができます。ここで問題を解決しました。最後のテキストビューだけが背景の変更を取得します。私は本当に配列を追跡して同期させたくありません。 –