我在for循环中以编程方式创建了TextView,在textView touch上,我在每个textview上都设置了边框线。 我要在单击一次按钮时删除所有textView边框线。 但它只会删除最后创建的textView边框线。
这是我的代码
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject c = jsonArray.getJSONObject(i);
final String text = c.getString(Constants.CARD_TEXT);
final AppCompatTextView textView = new AppCompatTextView(Card.this);
textView.setId(i);
textView.setText(text);
textView.setY((int) (hgt * yaxis / 100));
final int finalI1 = i;
txtNext.setOnClickListener(new View.OnClickListener() {
@SuppressLint("ResourceType")
@Override
onClick(View v) {
for (int j = 0; j <= finalI1; j++) {
Log.e("Clicked1221", String.valueOf(textView.getId() - j));
if (textView.getId() - j == j) {
;
}
textView.setBackgroundResource(0);
}
}
}
});
final int finalI = i;
textView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
textView.setSelected(true);
if (gestureDetector.onTouchEvent(event)) {
if (textView.isSelected()) {
textView.setBackgroundResource(R.drawable.doted);
}
return true;
}
imgBackground.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
textView.setBackgroundResource(0);
textView.setSelected(false);
return false;
}
});
return true;
}
});
layoutImage.addView(textView);
答案 0 :(得分:0)
您正在调用textView.setBackgroundResource(R.drawable.doted);在仅一个文本视图上,如果要更改所有已创建文本视图的背景,则必须将每个已创建文本视图的引用存储在某个地方,创建一个文本视图列表,并将每个新文本视图添加到该列表中,然后在onTouchListener中执行类似的操作
for(textView:textViews){
textView.setBackgroundResource(0);
textView.setSelected(false);
}