gpt4 book ai didi

android - Spinner onItemSelected 项目已被选中

转载 作者:可可西里 更新时间:2023-11-01 19:08:31 25 4
gpt4 key购买 nike

我有一个带有 onItemSelected 交互的微调器,但 Api 规范如何说:

This callback is invoked only when the newly selected position is different from the previously selected position or if there was no selected item.

我需要移除此限制,并且我希望在用户选择相同元素时也调用回调。怎么做?我阅读了有关扩展 Spinner 类并将位置设置为 INVALID_POSITION 的建议,但我不理解/无法做到这一点。有人做过同样的事情吗?

最佳答案

我还需要解决这个问题。我想要做的是拥有一个带有自定义范围选项的日期范围的 Spinner。这些行看起来像这样:

4 月 10 日 - 5 月 10 日
3 月 10 日 - 4 月 10 日
2 月 10 日 - 3 月 10 日
自定义范围

问题是,如果用户选择了一个自定义范围,然后想要更改他们的自定义范围,他们必须选择一个不同的范围,然后再次选择自定义范围选项。我希望用户能够再次选择“自定义范围”,以便可以再次显示自定义范围对话框。

我将 Spinner 分类并创建了我自己的监听器。代码切换选择,但随后立即切换,因此没有选择任何内容。在我的听众中,我只是忽略任何小于零的位置。

微调器只显示最后选择的项目。我创建了自己的自定义适配器并指定为每个 View 显示的内容,但这不是必需的。以下是我如何对 Spinner 进行子分类。

package com.example.widget;

import android.content.Context;
import android.widget.Spinner;

public class DateRangeSpinner extends Spinner {

private ItemSelectionListener listener;

public DateRangeSpinner(Context context) {
super(context);
}

/**
* This listener will be fired every time an item is selected,
* regardless of whether it has already been selected or not.
*
* @param l
*/
public void setOnItemSelectedListener(ItemSelectionListener l) {
listener = l;
}

public void removeOnItemSelectedListener() {
listener = null;
}

@Override
public void setSelection(int position) {
setSelection(position, true);
}

@Override
public void setSelection(int position, boolean animate) {
if (listener != null) {
listener.onItemSelected(position);
}
super.setSelection(position, animate);
super.setSelection(-1, animate);
}

public interface ItemSelectionListener {
public void onItemSelected(int position);
}

}

希望对您有所帮助!

关于android - Spinner onItemSelected 项目已被选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8212369/

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