ListView的OnItemClick不起作用

时间:2012-09-13 07:51:03

标签: android android-listview onitemclicklistener

我做了一个listview。 使用this教程链接 它工作正常。 但问题是,当我尝试在其活动类中添加onitemclick侦听器时,单击操作不起作用。我只想显示一个toast message.And这里是onItemClickListener的代码

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();

            }  
        });

为什么它不起作用任何人都可以告诉我???

4 个答案:

答案 0 :(得分:1)

如果您收到异常或强制关闭,您应该提及它。

首先,你的OnItemClickListener是错误的,因为传递给你的OnClickListener的View不是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 Clickable成为可能。正如我在评论中提到的,如果您的任何子视图都是可点击的,那么您的OnItemClickListener将不会接收事件,因为它将被孩子们使用。

答案 1 :(得分: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.
                    }
                    });

答案 2 :(得分: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();

            }  
        });

答案 3 :(得分: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
            }
        });

    }