我有一个表'D',每行有4个文字浏览。我设置了onlicklistener,它的工作原理。我想要的是让用户按下该行的任何文本视图,然后文本背景变为ltgray。我将解决是否每个textview或整个行被设置。 现在只有最后一个textview被设置为ltgray,无论用户按什么电视。基于代码,我的假设是我可以通过代码中的x索引将每个电视设置为onclick值:但是这种工作并不成功。我不能访问每个textViewB由x ?.该代码显示了tvB为其他情况设置,但这个新的设置所有textview的文本背景。我不想排行背景。这很容易,而且很有效。但只有边界显示。我需要的是该表格中所有4个电视的文本背景。 感谢您提前:动态设置textview背景颜色
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。一个视图只能有一个OnClickListener,所以只有最后一个会起作用。提示解决方案:为每个tableRow保留一个textview数组,以便您可以在点击行时循环访问该数组 – devnull69
@devnull,您在这里指出了问题。只有最后一个textview才能获得背景更改。我真的不想跟踪和同步数组。 –