Как найти список представлений, имеющих определенный тег (атрибут) - PullRequest
9 голосов
/ 29 марта 2012

Я установил тег для виджетов пользовательского интерфейса и хочу получить список View, который имеет определенный тег. Используя View.findViewWithTag("test_tag"), просто верните один просмотр не всех представлений, поддерживающих тег.

Любая помощь приветствуется.

Ответы [ 2 ]

15 голосов
/ 29 марта 2012

Вы не должны ожидать массива представлений от этого метода, так как сама подпись метода говорит, что он возвратит одно представление.

public final View findViewWithTag (Object tag) 

Однако, что вы можете сделать, это получить свой макет как1004 *, а затем переберите все дочерние представления, чтобы найти желаемый вид, выполнив поиск по их тегу.Например:

/**
 * Get all the views which matches the given Tag recursively
 * @param root parent view. for e.g. Layouts
 * @param tag tag to look for
 * @return List of views
 */
public static List<View> findViewWithTagRecursively(ViewGroup root, Object tag){
    List<View> allViews = new ArrayList<View>();

    final int childCount = root.getChildCount();
    for(int i=0; i<childCount; i++){
        final View childView = root.getChildAt(i);

        if(childView instanceof ViewGroup){
          allViews.addAll(findViewWithTagRecursively((ViewGroup)childView, tag));
        }
        else{
            final Object tagView = childView.getTag();
            if(tagView != null && tagView.equals(tag))
                allViews.add(childView);
        }
    }

    return allViews;
}
0 голосов
/ 10 ноября 2016
 int tags = 6; 
    for (int index = 0; index < tags; index++) {
        try{
            TextView txtView = (TextView)getView().getRootView().findViewWithTag("txtTag-"+index);
            txtView.setText(" TWitter/ @MOIALRESHOUDI ");
        } catch (Exception e){}
    }

надеюсь, это кому-нибудь поможет!

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