Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ListView onItemClick在活动中不起作用_Android_Listview_Onitemclicklistener - Fatal编程技术网

Android ListView onItemClick在活动中不起作用

Android ListView onItemClick在活动中不起作用,android,listview,onitemclicklistener,Android,Listview,Onitemclicklistener,当我在包含ListView的活动中使用此选项时,它不起作用 usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, ong arg3) { try { Intent intent = new Intent(U

当我在包含ListView的活动中使用此选项时,它不起作用

usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            ong arg3) {
    try {
        Intent intent = new Intent(UsersListActivity.this,
                UserActivity.class);
        startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
});
这很有效。但为什么会有如此奇怪的行为。为什么它没有按应有的方式工作呢


谢谢

如果您有自定义适配器视图,您需要参考该适配器视图。我认为,如果您引用了超类adapterview,并且在调用
setAdapter()
时,
new adapterview.OnItemClickListener()
的代码块将不会执行

usersList.setOnItemClickListener(new CustomAdapterView.OnItemClickListener() {

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            ong arg3) {
    try {
        Intent intent = new Intent(UsersListActivity.this,
                UserActivity.class);
        startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
});
usersList.setOnItemClickListener(新的CustomAdapterView.OnItemClickListener(){
公共链接(AdapterView arg0、视图arg1、内部arg2、,
(第3段){
试一试{
意向意向=新意向(UsersListActivity.this,
UserActivity.class);
星触觉(意向);
}捕获(例外e){
e、 printStackTrace();
}
}
});
它会工作的

lv.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3) {
   // TODO Auto-generated method stub

     try {
       Intent intent = new Intent(mActivity, UserActivity.class);
       mActivity.startActivity(intent);
       } catch (Exception e) {
         e.printStackTrace();
      }
   }
});
lv.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(适配器视图arg0、视图arg1、内部位置、长arg3){
//TODO自动生成的方法存根
试一试{
意向意向=新意向(mActivity,UserActivity.class);
主动性。主动性(意图);
}捕获(例外e){
e、 printStackTrace();
}
}
});

尝试在活动类中使用此行

usersList.setOnItemClickListener(new OnItemClickListener() {
此行仅使用活动类中的适配器。此操作无效。我想不太清楚

usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {    
usersList.setOnItemClickListener(新)
AdapterView.OnItemClickListener(){

这里您使用了
适配器视图的
视图
,它是
自定义适配器的父类
。这就是它不起作用的原因。相反,您应该使用
自定义适配器的
视图

getView()
函数帮助您将父级
Adpater视图
的视图转换为
自定义适配器
视图

所以你可以使用这两个选项中的任何一个

usersList.setOnItemClickListener(new CustomAdapterView.OnItemClickListener() {

这两个选项都可以使用。

我发现:

当您单击时,您的自定义列表项会出现不响应的情况…那么原因是什么?解决方案是什么

以下是几个问题和解决方案:

1.场景:列表项布局包含复选框 问题:McClickListener没有响应

原因:默认情况下,复选框也有自己的click listener来更改其状态,并覆盖容器ListView

解决方案:通过将这些属性设置为
false

android:focusable="false"
android:focusableInTouchMode="false"
2.场景:随机 问题:McClickListener根本不响应任何消息

原因:不知道

解决方案:在代码中,只需在设置适配器之前设置一个McClickListener。它可以随机工作@@

3.场景:列表项包含ImageButton 问题:McClickListener根本不响应任何消息

原因:不知道

解决方案:在代码中,将ImageButton焦点设置为
false

ImageButton button = (ImageButton) convertView.findViewById(R.id.imageButton);
button.setFocusable(false);
4.场景:列表项包含TextView 问题:McClickListener无法响应

原因:我认为您已将此属性设置为TextView:
android:inputType=“textMultiLine”

解决方案:只需使用
android:minLines/android:maxLines
删除该属性即可

5.场景:列表项包含链接到网站URL或任何“mailto:”内容的文本视图 问题:McClickListener无法响应

原因:TextView覆盖列表项的焦点


解决方案:只需删除TextView上的属性
android:autoLink

您是否使用自定义适配器。?是的。我的项目中几乎所有的列表视图都使用自定义适配器。大约有10-12个。但我从未遇到过这个错误。您可能会感兴趣的一件事是:我对3个列表视图使用相同的父项和相同的列表项,但使用不同的租用适配器不会引起任何问题,对吗?我已尝试在下面的回答中对此意外行为提供一些解释。如果我在某个地方出错,请告诉我。但这是我一直在使用的东西。从来没有造成过这样的问题。这看起来像。但为什么它在其他地方工作到现在为止?事实上,在3 sim之外ilar ListView具有相同的布局和相同的ListView项,1可以正常工作,而其他2不应该如此。列表视图中可能存在一些不同之处。因为如果使用自定义适配器,则必须使用同一适配器的视图。唯一的区别是1没有任何可单击的选项ListViewItem中的子项。其他2个有一个按钮,其onClickListener在getView()中实现.就是这样。你已经得到了解释。如果你需要使用onClickListener,你需要使用自定义适配器的视图。@Archie.bpgc:任何时候,事实上都要感谢你。我以前没有想过,但你的帖子让我对它有了深刻的理解。
android:focusable="false"
android:focusableInTouchMode="false"
ImageButton button = (ImageButton) convertView.findViewById(R.id.imageButton);
button.setFocusable(false);