获取 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...
}
我正在使用 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...
}