Android 在ViewSwitcher中获取选定视图的值

Android 在ViewSwitcher中获取选定视图的值,android,list,viewswitcher,Android,List,Viewswitcher,我正在使用一个视图切换器在两个视图之间切换(正如应该使用的那样) 这是ViewSwitcher代码: final ViewSwitcher viewSwitcher = new ViewSwitcher(getApplicationContext()); TextView t = new TextView(this); [...] t.setOnClickListener(new View.OnCl

我正在使用一个
视图切换器
在两个视图之间切换(正如应该使用的那样)

这是
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));
                }
final ViewSwitcher ViewSwitcher=新的ViewSwitcher(getApplicationContext());
TextView t=新的TextView(此);
[...]
t、 setOnClickListener(新视图。OnClickListener(){
@凌驾
公共void onClick(视图){
viewSwitcher.showNext();
}
});
viewSwitcher.addView(t,
新建TableRow.LayoutParams(
TableRow.LayoutParams.MATCH_父项,
TableRow.LayoutParams.MATCH_PARENT,1f));
最终字符串键=(字符串)map.keySet().toArray()[n];
if(key.contains(“编辑文本”))
{
EditText e=新的EditText(本);
[...]
e、 setOnLongClickListener(新视图。OnLongClickListener(){
@凌驾
仅长按公共布尔值(视图){
viewSwitcher.showPrevious();
返回true;
}
});
viewSwitcher.addView(e,
新建TableRow.LayoutParams(
TableRow.LayoutParams.MATCH_父项,
TableRow.LayoutParams.MATCH_PARENT,1f));
}
else if(key.contains(“微调器”))
{
微调器旋转=新微调器(getApplicationContext());
[...]
spin.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView AdapterView、View视图、int i、long l){
如果(adapterView.getSelectedItemPosition()==0)
viewSwitcher.showPrevious();
}
@凌驾
未选择公共无效(AdapterView AdapterView){
}
});
viewSwitcher.addView(旋转,
新建TableRow.LayoutParams(
TableRow.LayoutParams.MATCH_父项,
TableRow.LayoutParams.MATCH_PARENT,1f));
}
事实上,我试图将ViewSwitcher放在一个列表中,以便稍后获得值

(就像我以前只使用EditText时一样),但它实际上不起作用,因为我无法获取
视图切换程序
视图中写入的内容的值

因此,我的问题是:您知道如何获取当前在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...
}

我知道getCurrentView()是存在的,但它起作用了,我只是做得有点不同。我将ViewSwitcher放在列表中,之后,当我想要获取值时,我在另一个函数中使用getCurrentView()来获取值,具体取决于它是什么类型的视图。谢谢你,伙计!是否要获取视图类型?请检查我的更新答案。这可能对你有帮助。你的第一个答案已经帮了我很多,我只是重新适应了一点我的要求,非常感谢你的时间!