如何在android视图中获取所有对象并访问其id和值?

时间:2013-12-04 15:57:51

标签: android android-layout android-intent

我有一个主要活动,它根据用户操作显示(使用setContentView)不同的xml布局,因此主要活动不知道已设置了女巫布局,并且无法通过findbyid访问它们。

我的主要活动的任务是读取xml文件中的所有对象,如TextView,button,...并且将它们的id和值保存在哈希表中在应用程序框架中的不同类中使用。框架中的类知道这些对象并可以使用它们。

问题是如何在视图中获取所有对象并访问其id和值?

1 个答案:

答案 0 :(得分:1)

从未测试过,但这是一个简单的实现。您可以使用

来使用它
List<Integer> ids = new ViewIdEnumerator(yourView).getIds();

以下是ViewIdEnumerator的实现。

package mobi.sherif.so;

import java.util.ArrayList;
import java.util.List;

import android.view.View;
import android.view.ViewGroup;

public class ViewIdEnumerator {
    List<Integer> ids;
    public ViewIdEnumerator(View v) {
        ids = new ArrayList<Integer>();
        enumerate(v);
    }

    public List<Integer> getIds() {
        return ids;
    }
    private void enumerate(View child) {
        if (child == null)
            return;

        if (child instanceof ViewGroup) {
            enumerate((ViewGroup) child);
        }
        else if (child != null) {
            ids.add(child.getId());
        }
    }

    private void enumerate(ViewGroup parent) {
        ids.add(parent.getId());
        for (int i = 0; i < parent.getChildCount(); i++) {
            View child = parent.getChildAt(i);
            if (child instanceof ViewGroup) {
                enumerate((ViewGroup) child);
            } else {
                enumerate(child);
            }
        }
    }
}