1

我做了一个列表视图。使用教程链接它工作正常。但问题是当我尝试在其活动类中添加 onitemclick 侦听器时,单击操作不起作用。我只想显示一个 toast 消息。这里是 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

4 回答 4

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

    }  
});

试试我刚刚做的,它应该可以工作。如果它不起作用,您可能需要android:autoLink="web"从 xml 文件中删除该行。


该属性android:autoLink="web"使您的 View 的 TextView 可点击。正如我在评论中提到的,如果您的任何子视图是可点击的,您的 OnItemClickListener 将不会收到事件,因为它将被孩子们使用。

于 2012-09-13T09:25:26.530 回答
0

用这个

由于您使用的是 customadapter,因此您必须在 customadapter 类中执行此操作以处理列表视图的 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.
                    }
                    });
于 2012-09-13T08:08:59.043 回答
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();

            }  
        });
于 2012-09-13T09:09:51.303 回答
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
            }
        });

    }
于 2013-02-20T12:29:24.817 回答