无法获取ListView项目

时间:2013-03-12 16:55:29

标签: android android-listview android-event

我正在尝试学习如何在点击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
        }
    });

3 个答案:

答案 0 :(得分:2)

  

有谁知道我做错了什么?

我建议您使用OnItemClickListener代替 OnItemSelectedListener

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

   }                
});
当您想捕获点击事件时,通常会使用

OnItemClickListener OnItemSelectedListener 位于Spinner的另一端。

答案 1 :(得分:1)

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

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

focusable="false"

如果要在代码中生成布局,请将其设置为false

答案 2 :(得分:0)

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

OnItemClickListener 适用于点击事件

Personaly我始终为安全而实施。