我有一个微调器(仅代码的相关部分)...
protected void onCreate(Bundle savedInstanceState) {
Spinner to_spinner = (Spinner) findViewById(R.id.to_spinner);
List<Unit> list = myDbHelper.getAllUnits();
SpinnerUnitAdapter tUnitAdapter tUnitAdapter = new SpinnerUnitAdapter(this, android.R.layout.simple_spinner_item, list);
to_spinner.setAdapter(tUnitAdapter);
to_spinner.setOnItemSelectedListener(onItemSelectedListenerTo);
}
使用 onItemSelectedListener
AdapterView.OnItemSelectedListener onItemSelectedListenerTo = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view,
int position, long id) {
// do stuff
}
@Override
public void onNothingSelected(AdapterView<?> adapter) {
}
};
当选择一个项目时(即它说:“做东西”),我想设置/更改所选微调项目的文本。 (请注意,这与设置微调器位置(使用 setSelection())不同。
我正在考虑这样做
tUnitAdapter.getView(position, ?, ?).setText("new text");
我走在正确的道路上吗?在 getView 中将第二个(“convertView”)和第三个(“parent”)参数放在什么位置。我的旋转适配器看起来像:
public class SpinnerUnitAdapter extends ArrayAdapter<Unit> {
...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView label = new TextView(mContext);
label.setTextColor(Color.BLACK);
label.setTextSize(mContext.getResources().getDimension(R.dimen.list_row_font_size));
label.setGravity(Gravity.CENTER);
label.setText(getItem(position).getName());
return label;
}
}
最佳答案
Am I on the right track?
没有。您应该执行以下步骤:(在 onItemSelected
方法中)
更新您的模型(传递给适配器的项目数组),以便
position
索引处的项目采用新名称。在适配器对象上发出
notifyDataSetChanged
。或者,您可以通过((TextView) view).setText(new_name);
手动执行此操作
注意:在 onItemSelected
方法中,adapterView
指向微调器 View ,view
指向行 View 刚刚选择。
更新#1
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
((TextView) view).setText("new name");
}
更新#2
为此,您应该使用 Java 接口(interface)来实现回调,该回调在对话框关闭后调用。
public void onItemSelected(AdapterView<?> adapterView, final View view, int position, long id) {
Dialog dialog = new MyDialog(context, new MyDialog.OnItemSelectListener(){
@Override
public void onItemSelected(String newName){
((TextView) view).setText(newName);
}
});
dialog.show();
}
并在 MyDialog
类中声明接口(interface) OnItemSelectListener
。
关于android - 设置微调器所选项目文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33668922/