2

我正在尝试学习如何在单击单选按钮时接收通知,ListView但是当我单击项目旁边的单选按钮时没有任何返回ListView。下面是我设置监听器的代码。我在从服务器onPostExecute()填充我的方法ListView和我的主要活动扩展的方法下在异步任务中执行此操作MapActivity。有谁知道我做错了什么?

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
        }
    });
4

3 回答 3

2

有谁知道我做错了什么?

我建议您使用OnItemClickListener而不是OnItemSelectedListener

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

   }                
});

当您想要捕获点击事件时,通常使用OnItemClickListener 。OnItemSelectedListener通常与 Spinner 一起使用。

于 2013-03-12T16:59:45.437 回答
1

听起来你可能有焦点问题。仅当没有其他视图可以获取焦点时,单击侦听器才有效。

使用以下内容更改您的复选框 xml:

focusable="false"

或者,false如果您在代码中生成布局,请将其设置为。

于 2013-03-12T17:03:53.713 回答
0

OnItemSelectedListener用于触控板/轨迹球事件

OnItemClickListener用于点击事件

就我个人而言,我总是为安全起见。

于 2013-03-12T17:10:26.220 回答