获取 ViewSwitcher 中选中的 View 的值

Get value of selected View in ViewSwitcher

我正在使用 ViewSwitcher 在两个视图之间切换(因为它应该被使用)。

这是 ViewSwitcher 代码:

final ViewSwitcher viewSwitcher = new ViewSwitcher(getApplicationContext());

                TextView t = new TextView(this);
                [...]
                t.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        viewSwitcher.showNext();
                    }
                });

                viewSwitcher.addView(t,
                        new TableRow.LayoutParams(
                                TableRow.LayoutParams.MATCH_PARENT,
                                TableRow.LayoutParams.MATCH_PARENT, 1f));

                final String key = (String)map.keySet().toArray()[n];

                if(key.contains("EditText"))
                {
                    EditText e = new EditText(this);
                    [...]
                    e.setOnLongClickListener(new View.OnLongClickListener() {
                        @Override
                        public boolean onLongClick(View view) {
                            viewSwitcher.showPrevious();
                            return true;
                        }
                    });

                    viewSwitcher.addView(e,
                            new TableRow.LayoutParams(
                                    TableRow.LayoutParams.MATCH_PARENT,
                                    TableRow.LayoutParams.MATCH_PARENT, 1f));
                }
                else if (key.contains("Spinner"))
                {
                            Spinner spin = new Spinner(getApplicationContext());
                            [...]
                            spin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                                @Override
                                public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                                    if(adapterView.getSelectedItemPosition() == 0)
                                        viewSwitcher.showPrevious();
                                }

                                @Override
                                public void onNothingSelected(AdapterView<?> adapterView) {

                                }
                            });

                            viewSwitcher.addView(spin,
                                    new TableRow.LayoutParams(
                                            TableRow.LayoutParams.MATCH_PARENT,
                                            TableRow.LayoutParams.MATCH_PARENT, 1f));
                }

事实是我试图将 ViewSwitcher 放在一个列表中以便稍后获取值。

(因为它以前只使用 EditText 时有效),但它实际上不起作用因为我无法获得 ViewSwitcher 的视图中写入的值。

所以这是我的问题:你知道如何获取当前在 ViewSwitcher 中选择的视图的值,以便我可以将它添加到列表中以便稍后使用吗?

提前致谢。

您可以使用getCurrentView()方法获取当前显示的视图。

要从视图中获取值,请投射视图并从该视图中获取文本。例如,

EditText temp = (EditText) viewSwitcher.getCurrentView();
String s = temp.getText().toString();

您可以检查当前视图的类型,然后属性得到您想要的。

View v = viewSwitcher.getCurrentView();
if (v instanceof EditText) {
     //code...
} else if (v instanceof Spinner) {
     //code...
}