2013-03-12 5 views
2

Я пытаюсь узнать, как получить уведомление по щелчку на переключателе в ListView, но ничего не возвращается, когда я нажимаю на переключатель рядом с пунктом ListView. Ниже приведен код, в котором я настраивал слушателя. Я делаю это в асинхронной задаче в методе onPostExecute(), где я заполняю свой ListView с сервера, и моя основная деятельность распространяется на MapActivity. Кто-нибудь знает, что я делаю неправильно?Не удается получить элемент списка ListView

protected void onPostExecute(ArrayList<String> result) { 
    // ... some code 
    mapView.postInvalidate(); 

    final ArrayAdapter<String> arrayAdpt = new ArrayAdapter<String>(
      getApplicationContext(), android.R.layout.simple_list_item_single_choice, 
      viewline); 

    ListView restaurant_list = (ListView) findViewById(R.id.list); 
    restaurant_list.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
    restaurant_list.setAdapter(arrayAdpt); 
    restaurant_list.setScrollContainer(true); 
    restaurant_list.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> parent, View arg1, 
       int arg2, long arg3) { 
      // TODO Auto-generated method stub 
      Log.e("listargs", (String.valueOf(arg1)) + " " + String.valueOf(arg3)); 
     } 

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

Попробуйте onItemClickListener вместо этого. –

+0

С быстрым взглядом я не уверен, что вы хотите заменить onItemSelectedListener для ListView на onItemClickListener для ListView, как и другие (пока). Вы также можете установить прослушиватель для RadioButton. Но, конечно, это имеет большое значение в отношении того, какая область будет чувствительной к касанию. –

ответ

2

Кто-нибудь знает, что я делаю неправильно?

Я рекомендую вам использовать OnItemClickListener вместо OnItemSelectedListener

list.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> adapter, View parent, 
          int position, long id) { 
     // do your stuff 

    }     
}); 

OnItemClickListener обычно используется, когда вы хотите, чтобы поймать нажмите события. OnItemSelectedListener с другой стороны обычно используется с Spinner.

+0

Спасибо. Ваше предложение сработало. Я читал образцы из книги, и они никогда не упоминают OnItemClickListener. Я пытаюсь сделать преобразование из C# в Java, и это довольно сложная задача. Я действительно ценю твою помощь. – Dave

+0

@sajmon_d и вы тоже. Вы знаете, что есть 15-минутный кулдаун. –

+0

@ A - C A - C я забыл извините, моя глупая голова ... – Sajmon

1

Похоже, что у вас может быть проблема с фокусом. Click listener работает только в том случае, если другое представление не может сфокусироваться.

Alter свой флажок XML следующим:

focusable="false" 

Или установите его false, если вы создаете макеты в коде.

+0

У меня нет флажка xml, поскольку он является частью параметра ListView, используя simple_list_item_single_choice в качестве моего варианта макета. – Dave

0

OnItemSelectedListener для трекпада/трекбол событий

OnItemClickListener для событий щелчка

Personaly Я всегда реализую как для безопасности.

+0

Интересно. Я думал, что с помощью ListView вы должны установить его в режим, в котором вы можете выбрать один или несколько элементов, прежде чем он выдает какие-либо события _select_. Но так или иначе, как вы тестируете это на AVD? И знаете ли вы устройства Android, которые имеют эти методы ввода? –

Смежные вопросы