2013-11-20 4 views
-1

Я создаю значки в gridview динамически, я хочу получить доступ к щелкнутому элементу на экране сетки.Как я могу получить доступ к Textview внутри View?

OnClick событие отображает элементы, как показано ниже,

enter image description here

Мне нужно получить текст в TextView, используя код или я хочу, чтобы получить доступ к значению mTransformed. как я могу это достичь?

public void onClick(View v) {   
    ArrayList<View> result = new ArrayList<View>(); 
    ViewGroup viewGroup = (ViewGroup) v; 
    for (int i = 0; i < viewGroup.getChildCount(); i++) { 

     View child = viewGroup.getChildAt(1); 
     int id = child.getId(); 
    } 
} 
+0

может показать, где вы установили onlclicklistener, поэтому ясно, что представляет собой представление, полученное в onClick (View v). – MikeIsrael

ответ

4

Если вы создаете значки динамически просто установить идентификатор, как view.setId (1); Его нет необходимости получать идентификаторы с номером только позвонить view.getId(); это автоматически получит идентификатор конкретного вида, но нужно быть осторожным в предоставлении идентификатора, потому что, если два разных представления имеют одинаковые идентификаторы, такие как view1.setId (1); и view2.setId (1); то вы получите сообщение об ошибке Если вы создаете представления динамически, то давайте setId (i); и запустите i в цикле

+0

я установить идентификатор, как вы сказали, но когда я использую getid возвращает -1 – Sajeetharan

1

onClick возвращает вид, на который вы нажали. Так что, если вы нажмете на TextView вы можете просто делать:

public void onClick(View v) { 
    int id = v.getId(); 
    if (id == R.id.idoftextview) { 
     String text = ((TextView)v).getText().toString(); 
    } 
} 
+0

Дело в том, что я не знаю идентификатор текста, потому что иконы и текстовые изображения динамически создаются. И getID rturns -1 всегда. – Sajeetharan

+0

вы можете использовать setId во время создания вашего textview.View (родительский класс для TextView) имеет setId (int). Таким образом, вы можете исправить ошибку -1 – Blackbelt

+0

Я так понимаю, что существует 100 значков, и как вы можете найти, какой из них щелкнуть? – Sajeetharan

Смежные вопросы