如何从动态创建的微调器中获取价值?

时间:2016-11-07 21:17:37

标签: android android-layout android-spinner

在这里,我有一个布局,根据我从网络服务获得的一些数据创建一些视图。有一些edittexts,textviews,spinners等。

它是一种民意调查,所以在我克制布局和选项后,我必须填写它并再次将数据发送到服务器。

为此,我将对象放在微调器上,我使用此线程中建议的适配器 https://stackoverflow.com/a/8116756/6323705

我的问题是如何在最后获得微调器值?因为当我使用这个

int childs = parent.getChildCount();
     for(int i=0;i <= childs;i++){
        View v=parent.getChildAt(i);
        if (v instanceof EditText) {
            EditText et = (EditText) v;
            //then save the data in an special Array
        }
            else if (v instanceof TextView) {
                TextView tv = (TextView) v;
                //save it in an other Array
            }

             else if (v instanceof Spinner) {
           Spinner sp = (Spinner) v;
            //putting OnItemSelectedListener here is not working either
            }

它只保存最后的微调器值,并且每个布局我有4个或5个微调器,所有不同。

要从布局中获取数据,然后使用以下内容发送它:

{{1}}

我该怎么做?

2 个答案:

答案 0 :(得分:0)

我在app中有相同的要求,而且我使用它并且工作正常。

List<View> allVIEWS=new ArrayList<>();
int spinnerValue=0;

此列表包含所有动态视图。

因此,您正在创建动态微调器,因此当您动态定义微调器时,请在该代码中添加此行。

spinner.setOnItemSelectedListener(this);

并在覆盖metod:

@Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        spinnerValue=0;
        for (int noOfViews = 0; noOfViews < itemDetailses.getOption().size(); noOfViews++) {
            if (itemDetailses.getOption().get(noOfViews).getOptType().equals("-2")) {
                Spinner s = (Spinner) allVIEWS.get(noOfViews);
                sp1v = itemDetailses.getOption().get(noOfViews).getValues().get(s.getSelectedItemPosition()).getOptPriceDiff();
                spinnerValue+=Integer.parseInt(sp1v);
            }
        }

    }

答案 1 :(得分:0)

您可以覆盖名为onItemSelected

的Spinner的内置方法

示例:

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    final String item = parent.getItemAtPosition(position).toString();
}

字符串&#39;项目&#39;具有所选的微调器项的值。希望这有帮助!