gpt4 book ai didi

android - 设置微调器选择的项目文本

转载 作者:行者123 更新时间:2023-11-29 20:16:54 24 4
gpt4 key购买 nike

我有一个微调器(只有相关的代码部分)...

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指向你的spinner 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com