Android App,两个微调器onItemSelected

时间:2018-07-13 07:20:43

标签: java android

我有两个微调器,一个可以选择时间,一个可以选择日期。因此,我有两个微调器onItemSelected方法,每个微调器一个。

public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
THE_TIME=adapterView.getSelectedItem().toString();
filter_the_map(THE_TIME,THE_DAY);
}

public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
THE_DAY=adapterView.getSelectedItem().toString();
filter_the_map(THE_TIME,THE_DAY);
}

所以,我有一张地图,上面有一些标记,这些标记都有与之关联的日期和时间,我想根据字符串THE_TIME和THE_DAY删除或添加标记。因此,我的第一个较小的问题是,在应用程序初始化时,两个onItemSelected都被调用(因为从一开始就选择了某项),因此在相同条件下对地图进行了两次过滤。更严重的问题是,当应用程序初始化时,它需要从互联网上获取标记,并且由于应用程序启动后也会立即调用过滤器,因此这可能意味着即时过滤器甚至还没有在其中。好像基本线程一样,尽管我在移动设备上遇到了一些问题。

public void fetch_markers()
{
markers=get_them();
put_markers_on_map(markers);
} 

如果有更好的方法来解决这个问题,或者您可以帮助我解决目前所拥有的问题,谢谢!

1 个答案:

答案 0 :(得分:0)

为了解决您的问题,您可以将微调器中的第一项设置为“选择时间”,将第二项设置为“选择日期”或其他。由于微调器并非设计为命令小部件,因此始终选择微调器中的一项。在onItemSelected()方法中,您可以根据名称或位置进行检查,例如:-

if(!adapterView.getSelectedItem().toString().equals("Select Date"))
{
THE_TIME=adapterView.getSelectedItem().toString();
filter_the_map(THE_TIME,THE_DAY);
}

类似地,您可以为第二个微调器做。