2013-12-21 6 views
0

Привет, у меня есть Spinner (SpinnerP) из ArrayList (рабочий список). Последний элемент в рабочем списке будет «добавить»OnClickListener() на последнем элементе Spinner

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, R.layout.spinneritem, worklist); 
     dataAdapter.setDropDownViewResource(R.layout.custom_spinner); 
     SpinnerP.setAdapter(dataAdapter); 

Spinner отлично работает, но мне нужно, чтобы создать что-то вроде onClickListener для последнего элемента в Spinner. Это будет действие ADD для Spinner. Как я могу это сделать ?

Когда я использую Spinner.setOnItemSelectedListener (новый OnItemSelectedListener(), у меня есть 2x ошибки

Multiple markers at this line 
    - OnItemSelectedListener cannot be resolved to a type 
    - The method setOnItemSelectedListener(AdapterView.OnItemSelectedListener) in the type AdapterView<SpinnerAdapter> is not applicable for the 
    arguments (new OnItemSelectedListener(){}) 
+0

Вам нужно импортировать 'onItemSelectedListener' так:' импорт android.widget.AdapterView.OnItemSelectedListener; ' где все ваши другие импорты. Кроме того, разместите свой новый код. – hichris123

+0

Опубликуйте новый код, который используете. – hichris123

+0

Что это значит? Вы хотите найти «прядильщик» с вашего взгляда? Просто отправьте свой код? И что с комментарием удаляется? – hichris123

ответ

1

установить onItemSelectedListener, а затем проверить, если это то, что элемент. Например:

Spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 

       String selectedValue = arg0.getItemAtPosition(arg2).toString(); 

       if(selectedValue.equals("add")){ 
          // add item to spinner 
       } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

     } 
    });  

You необходимо импортировать onItemSelectedListener следующим образом:

import android.widget.AdapterView.OnItemSelectedListener; 
0

spinner.setOnItemSelectedListener (новый OnItemSelectedListener() { @Override общественных недействительный onItemSelected (AdapterView parentView, Вид selectedItemView, внутр позиция, длинный идентификатор) { // Здесь вы проверяете, это последний элемент или нет, то принять меры. если ((worklist.size() - 1) == положение) { }}

   @Override 
       public void onNothingSelected(AdapterView<?> parentView) { 
        // your code here 
       } 

      }); 
0

Принятый ответ действительно работает, но я думаю, что это не является чистым, чтобы проверить, если значение строки выбранным элементом является строка последнего элемента. AdapterView предоставляет метод getCount(), который возвращает общее количество элементов. Теперь вы можете проверить, если позиция (+1 конечно) выбранный элемент соответствует общему количеству:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      if(parent.getCount() == position + 1) {// last item 
       // your code here 
      } 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 
Смежные вопросы