2013-03-12 125 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。 – 2013-03-12 16:57:55

+0

匆匆一瞥,我不確定是否需要爲ListView替換ListItem的onItemSelectedListener,以及ListView的onItemClickListener(到目前爲止)。您還可以爲RadioButton設置一個監聽器。但是,當然,這對於哪個區域會觸摸敏感區域有很大不同。 – 2013-03-12 17:05:05

回答

2

有誰知道我做錯了嗎?

我建議你使用的OnItemClickListener代替OnItemSelectedListener

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

    }     
}); 

OnItemClickListener通常被用來當你想趕上click事件。 OnItemSelectedListener是通常與Spinner一起使用的另一方。

+0

謝謝。你的建議奏效了。我一直在關注書中的樣本,他們從未提及過OnItemClickListener。我試圖從C#轉換到Java,這是一個相當大的挑戰。我非常感謝你的幫助。 – Dave 2013-03-12 17:08:06

+0

@sajmon_d也不是你。你知道有一個15分鐘的冷卻時間。 – 2013-03-12 17:09:57

+0

@ A - C A - C我忘了對不起,我的笨頭... – Sajmon 2013-03-12 17:11:02

1

這聽起來像你可能有焦點問題。只有在沒有其他視圖可以獲得焦點的情況下,點擊偵聽器纔有效

改變你的複選框XML下列要求:

focusable="false" 

或設置爲false,如果你在代碼生成的佈局。

+0

我沒有複選框xml,因爲它是使用simple_list_item_single_choice作爲佈局選項的ListView參數的一部分。 – Dave 2013-03-12 17:19:24

0

OnItemSelectedListener是觸控板/軌跡球事件

OnItemClickListener是click事件

本人來說我總是實現這兩種安全。

+0

有趣。我在想,使用ListView時,您必須將其設置爲在發出任何_select_事件之前可以選擇一個或多個項目的模式。但無論如何,你如何在AVD上測試?你知道有這些輸入法的Android設備嗎? – 2013-03-13 08:29:15