3

是否可以获取列表或找到Spinner与特定标签匹配的所有内容?

我希望用户能够动态添加新Spinner的小部件,但我需要能够动态地从每个Spinner.

jQuery中,我可以通过 选择与某个类匹配的所有元素$('.myClassSelector').each()。可以在 Android 中完成此操作或类似操作吗?

更新 所有微调器都LinearLayout在 XML 中指定的特定对象中。布局用作所有微调器的容器。

4

3 回答 3

3

我认为您可以获得先前添加的布局的所有子项,Spinner并检查该子项是否Spinner存在。

    LinearLayout ll = //Your Layout this can be any Linear or Relative layout 
                     //in which you added your spinners at runtime ;

    int count = ll.getChildCount();
    for(int i =0;i<count;i++)
    {
        View v = ll.getChildAt(i);
        if(v instanceof Spinner)
        {
            // you got the spinner
            Spinner s = (Spinner) v;
            Log.i("Item selected",s.getSelectedItem().toString());
        }
    }
于 2012-06-04T05:34:40.580 回答
1

如果可能的话,最好将所有微调器添加到相同的线性布局中并使用 FasteKerinns 解决方案,但如果不可能,请尝试以下类似的事情.....

Vector spinners = new Vector ():

private void treverseGroup(ViewGroup vg)
{
    final int count = vg.getChildCount();
    for (int i = 0; i < count; ++i)
    {
        if (vg.getChildAt(i) instanceof Spinner) 
        {

          spinners.add(vg.getChildAt(i));
        }
        else if (vg.getChildAt(i) instanceof ViewGroup)
            recurseGroup((ViewGroup) gp.getChildAt(i));
    }

}
于 2012-06-04T06:04:49.990 回答
0

下面的方法能够在不使用递归的情况下检索整个视图层次结构中的所有 Spinner 。它还匹配给定的标签。root

private ArrayList<Spinner> getSpinners(ViewGroup root, Object matchingTag) {
    ArrayList<?> list = root.getTouchables();

    Iterator<?> it = list.iterator();
    while (it.hasNext()) {
        View view = (View) it.next();
        if (!(view instanceof Spinner && view.getTag().equals(matchingTag))) {
            it.remove();
        }
    }

    return (ArrayList<Spinner>) list;
}
于 2012-06-05T14:58:32.307 回答