Как установить TextView в случае onClick?Android - PullRequest
0 голосов
/ 12 мая 2011

Итак, у меня есть переменная TextView, объявленная в действии, такая как

TextView t;

В упражнении реализован OnClickListener, поэтому он имеет функцию

public void onClick(View v){
    //switch (v.getId()) {
    //case:.......
}

Я знаю, что вы можете использовать R.id.itemID в операторе switch, чтобы сказать некоторому элементу, что нужно что-то делать на клике, однако в моем случае:

1) Я использую переключатель текста с viewswitcher.viewfactory

2) из-завыше, в моем основном XML-макете я использую

<TextSwitcher> without a surrounding 
<TextView> so the only id I have is the textswitcher

, чтобы сделать что-то, когда я нажимаю на текст текстового представления, которое я сделал

t.setOnClickListener(this)

Однако я неЯ не знаю, как установить регистр в операторе switch, поэтому я просто использовал default, что, конечно, могло бы вызвать некоторые большие проблемы, если я установил другие представления и прочее для слушателя.

Так что есть еще один способустановить onclicklistner для textview без идентификатора xml или есть способ выяснить id текстового представления?

Спасибо!

Ответы [ 2 ]

1 голос
/ 12 мая 2011

вы можете сделать t.setTag ("yourTag") (см. http://developer.android.com/reference/android/view/View.html#setTag(java.lang.Object), а затем выполнить v.getTag в операторах if, а не в операторе switch, поскольку это будет строка.

илив качестве альтернативы, я думаю, что вы можете определить уникальный идентификатор в своих ресурсах (см. http://developer.android.com/guide/topics/resources/more-resources.html#Id"), затем используйте setTag (int key, tag) http://developer.android.com/reference/android/view/View.html#setTag(int, java.lang.Object)

i 'В основном мы видели, как люди просто устанавливают тег, а затем ссылаются на него позже.

0 голосов
/ 12 мая 2011

Что ж, даже если вы используете ViewSwitcher, нет никаких причин, по которым вы не можете установить идентификатор для TextView в файле XML.

Однако, если вы настаиваете на том, чтобы не устанавливать идентификатор в xml, вы можете сделать это:

ViewSwitcher vs = (ViewSwitcher)findViewById(R.id.viewswitcherid);
for(int i=0;i<vs.getChildCount();i++){
  if(TextView.class.isInstance(vs.getChildAt(i))){
    vs.getChildAt(i).setId(R.id.textviewid);
    break;
  }
}

и у вас будет идентификатор, который вы можете использовать в своем выражении switch.

...