gpt4 book ai didi

android - 如何在 android 下获得工作的动态 ToggleButton 文本?

转载 作者:IT老高 更新时间:2023-10-28 23:33:01 27 4
gpt4 key购买 nike

我有一个 ToggleButton,其设置如下:

final ToggleButton filterButton = (ToggleButton) findViewById(R.id.filterTags);
filterButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (filterButton.isChecked()) {
// pop up the list of tags so the user can choose which to filter by
// once one is chosen, the spinner will be updated appropriately
showDialog(DIALOG_TAGS);
} else {
// going unpressed, set the the spinner list to everything
updateSpinner(db.itemNames());
}
}
});

对话框如下所示:

   case DIALOG_TAGS:
final String[] tagNames = db.tagNamesInUse();
dialog = new AlertDialog.Builder(this)
.setItems(tagNames, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
updateSpinner(db.getItemNamesForTag(tagNames[which]));
final ToggleButton filterButton = (ToggleButton) findViewById(R.id.filterTags);
filterButton.setTextOn(tagNames[which]);
dialog.dismiss();
}
})
.setNegativeButton("Cancel", UITools.getDialogCancellingListener())
.create();

这个想法是:如果打开 ToggleButton,它会弹出一个单选 ListView 对话框,即标签列表。一旦选择了一个标签,它就会成为 ToggleButton 的新 textOn。如果 ToggleButton 已关闭(未选中),则文本将恢复为静态 TextOff。

问题是:一旦对话框消失,按钮就不会被重绘。显示的文本仍然是 textOn 的先前值。

如何强制重绘?我试过 filterButton.postInvalidate(); 但这没有帮助。

最佳答案

解决了!明智地阅读 ToggleButton 的源代码表明,虽然 setTextOn() 和 setTextOff() 不会导致对更新 TextView 位的(私有(private))syncTextState 的调用,但调用 setChecked()。所以诀窍是:

dialog = new AlertDialog.Builder(this)
.setItems(tagNames, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
updateSpinner(db.getItemNamesForTag(tagNames[which]));
final ToggleButton filterButton = (ToggleButton) findViewById(R.id.filterTags);
filterButton.setTextOn(tagNames[which]);
filterButton.setChecked(filterButton.isChecked());
dialog.dismiss();
}
})

效果很好。支持开源!

关于android - 如何在 android 下获得工作的动态 ToggleButton 文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3784292/

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