Изменить программно созданный текстовый фон при нажатии кнопки - PullRequest
0 голосов
/ 11 февраля 2019

Я создал программно TextView в цикле for, при касании 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);

1 Ответ

0 голосов
/ 11 февраля 2019

Вы вызываете textView.setBackgroundResource (R.drawable.doted);только в одном текстовом представлении, если вы хотите изменить фон всех созданных текстовых представлений, вы должны где-то хранить ссылку на каждое созданное текстовое представление, создавать список текстовых представлений и добавлять каждое новое текстовое представление в этот список, а в onTouchListener делать что-то подобное

 for(textView:textViews){
     textView.setBackgroundResource(0);

     textView.setSelected(false);

  }
...