Spinner OnItemSelectedListener双选问题

时间:2012-04-03 05:37:06

标签: android android-spinner

我遇到了一个奇怪的问题。我的OnItemSelectedListener似乎只运行一次,我的意思是它在第一次单击相应的项目时显示我的测试Toast,但是当我第二次点击同一项目时它没有显示测试Toast。(它确实有效)在第二次点击不同的项目时)有什么问题?请帮助我

部分代码在这里

        //get task object from menu
    taskListArr = new ArrayList<Task>();

    taskListArr = getCurrentTasks(taskListArr);

    myTask=new TaskListAdapter(this, 0, taskListArr);
    ArrayAdapter<String> aa = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, TaskModel.sorts);
    aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    sortSpinner.setAdapter(aa);
    sortSpinner.setOnItemSelectedListener(this);



    @SuppressWarnings("unchecked")
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
        long arg3) {
    if(arg2 == 0){
        Toast.makeText(getApplicationContext(), "1", Toast.LENGTH_SHORT).show();
        Collections.sort(taskListArr);
        taskListView.setAdapter(myTask);
    }
    if(arg2 == 1){
        Toast.makeText(getApplicationContext(), "2", Toast.LENGTH_SHORT).show();
        Collections.sort(taskListArr, new DateComparator());
        taskListView.setAdapter(myTask);
    }
    if(arg2 == 2){
        Toast.makeText(getApplicationContext(), "3", Toast.LENGTH_SHORT).show();
        Collections.sort(taskListArr, new PriorityComparator());
        taskListView.setAdapter(myTask);
    }
    position = arg2;
}

public void onNothingSelected(AdapterView<?> arg0) {

}

2 个答案:

答案 0 :(得分:0)

在Android开发者网站http://developer.android.com/reference/android/widget/Spinner.html

中查看微调器
A view that displays one child at a time and lets the user pick among them. The items in the Spinner come from the Adapter associated with this view.

一次选择一个孩子。因此,再次选择已选择的子项将不会调用onItemSelected函数。

答案 1 :(得分:0)

我同意user936414回答他是对的,但是如果你仍然希望你的吐司再来,那么在你的微调器上添加一个触摸式监听器并在ontouch事件中添加这个

line sortSpinner.setOnItemSelectedListener(this);

每当你触摸你的微调器时,每次都会再次调用侦听器,你每次都会选择on item