2012-09-13 175 views
1

我做了一个listview。 使用this教程链接 它工作正常。 但问题是,当我尝试将其活性类中添加onitemclick监听点击动作不干活只是想在这里它的代码显示举杯message.And为onItemClickListenerListView的OnItemClick不起作用

listViewCity.setOnItemClickListener(new OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> a, View v, int position, long id) { 

        String item = ((TextView)v).getText().toString(); 

        Toast.makeText(getApplicationContext(), item, Toast.LENGTH_LONG).show(); 

      } 
     }); 

为什么它不”任何人都可以告诉我吗?

+0

您的'物品'内是否有任何按钮或其他可点击的视图? –

+0

雅,链接那里..检查我提到的链接 – MBMJ

+1

尝试TextView.setFocusable(false);在获取查看方法 – Nitin

回答

0

使用此

由于您使用的是customadapter你将不得不这样做在你的customadapter类来处理的ListView onclicks ...

convertView.setClickable(true); 
    convertView.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View paramView) 
        { 
         //if you want you can use the "position" value to get the desired row items. 
        } 
        }); 
+0

但我的代码的问题是什么?为什么它不起作用 – MBMJ

+0

看到您正在使用扩展数组适配器的自定义适配器类,在这种情况下,你不能处理你写的方式的列表视图的onClicks ..我发布的代码将帮助你。由于你正在加载自定义的列表视图行,处理适配器类中的onClicks做的工作... –

0

尝试......

listViewCity.setOnItemClickListener(new OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
        String item = listViewCity.getItemAtPosition(position).toString(); 

        Toast.makeText(getApplicationContext(), item, Toast.LENGTH_LONG).show(); 

      } 
     }); 
+0

它不work.just已经尝试过 – MBMJ

+0

很多时候我用这个,但我工作很好。 –

1

如果你正在得到一个例外或强制关闭,你笑老提到它。

首先,您的OnItemClickListener错误,因为传递给您的OnClickListener的视图不是TextView,因此您不能将其转换为TextView。

您可以通过以下修正:

listViewCity.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
     String item = ((TextView)v.findViewById(R.id.cityName)).getText().toString(); 
      Toast.makeText(getApplicationContext(), item, Toast.LENGTH_LONG).show(); 

    } 
}); 

尝试什么,我只是做了它应该工作。如果它不起作用,您可能需要从xml文件中删除行android:autoLink="web"


属性android:autoLink="web"正在使您的View的TextView可点击。正如我在我的评论中提到的,如果您的任何子视图都是可点击的,则您的OnItemClickListener将不会收到事件,因为这些事件将由子级消耗。

+0

它不工作,当我使用你的code.but删除后'android:autoLink =“网络”'它工作.thanks.But网址不起作用:) – MBMJ

+0

再次检查答案 –

0

我有同样的问题,并通过设置我需要点击可点击,然后添加侦听器来解决它。我将下面的方法放在自定义的适配器中(在getView方法中)。类似这样的:

public void setViewsClickable(int position) { 
     myView.button.setClickable(true); 
     myView.radioButton.setClickable(true); 
     myView.button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // what this button should do 
      } 
     }); 

     myView.radioButton.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // what clicking this radio button should do 
      } 
     }); 

    }