2013-03-12 90 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