Как я мог узнать, какой "TextView" нажал - PullRequest
0 голосов
/ 13 апреля 2020

Я создавал динамическое c Текстовое представление, и мне нужно знать, какое из этих текстовых представлений было выбрано пользователем, которого я прочитал, что мне нужно использовать метод getTag (), но он продолжает возвращать ноль, когда я пытаюсь это сделать мой код активности в java:

        for(int i=0;i<size;i++){
        TextView temp = new TextView(this);
        temp.setId(i);
        temp.setId(i);
        String s = "";
        temp.setText(s);
        temp.setTextColor(Color.RED);
        mylieniarlayout.addView(temp);
        tv[i] = temp;
    }
    final TextView answertv = findViewById(R.id.answertv);
    mylieniarlayout.setOnClickListener(new View.OnClickListener() {
        @SuppressLint("SetTextI18n")
        @Override
        public void onClick(View v) {
            Toast.makeText(getBaseContext(),"ID: "+ v.getTag(), Toast.LENGTH_SHORT).show();
            answertv.setText("Clicked ID: " + v.getTag());
        }
    });

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Во-первых, методы setTag () и getTag () в представлении не используются для идентификации представления. Мы используем getId () для идентификации представления. Пожалуйста, прочитайте документ здесь, getTag для android разработчиков

Во-вторых, ваш onClickListner находится в макете, который не даст вам выбранный идентификатор textView. В своем коде вы устанавливаете идентификатор для текстового представления и пытаетесь извлечь тег, который является ошибкой.

  1. onClickListener должен быть в текстовом представлении, для которого вы хотите тег.
  2. При создании textView установите тег, а затем вы получите тег для этого textview.
0 голосов
/ 13 апреля 2020

Вы можете попробовать if else условие

Как:

if(v.getTag() == 0){
  //Show position 0 here
} else {
  //Other position
}

Надеюсь, вы получили ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...