我有一个主要活动,它根据用户操作显示(使用setContentView)不同的xml布局,因此主要活动不知道已设置了女巫布局,并且无法通过findbyid访问它们。
我的主要活动的任务是读取xml文件中的所有对象,如TextView,button,...并且将它们的id和值保存在哈希表中在应用程序框架中的不同类中使用。框架中的类知道这些对象并可以使用它们。
问题是如何在视图中获取所有对象并访问其id和值?
答案 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);
}
}
}
}