当我在具有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();
}
}
});
搜索解决方案后,我最终在适配器
的getView()
中进行了解决方案
convertView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
ong arg3) {
try {
Intent intent = new Intent(mActivity,
UserActivity.class);
mActivity.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
});
这很有效。但为什么这么奇怪的行为。它为什么不按照应有的方式工作。
谢谢
答案 0 :(得分:5)
usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
此处您使用了View
Adapter View
Custom Adapter
,这是View
的父类。这就是为什么它不起作用。相反,您应该使用Custom Adapter
的{{1}}。
getView()
功能可帮助您将家长Adpater View
的视图转换为Custom Adapter
视图。
所以你使用两个选项中的任何一个,
usersList.setOnItemClickListener(new CustomAdapterView.OnItemClickListener() {
或
usersList.setOnItemClickListener(new OnItemClickListener() {
这两个选项都可行。
答案 1 :(得分:2)
我发现了on a blog:
当您点击时,您的自定义列表项会出现响应...那么原因是什么,解决方案是什么?
这里有几个问题和解决方案:
问题:OnItemClickListener没有响应。
原因:默认情况下,CheckBox也有自己的点击侦听器来更改其状态,它会覆盖容器ListView。
解决方案:通过将这些属性设置为false
android:focusable="false"
android:focusableInTouchMode="false"
问题:OnItemClickListener根本没有响应!!!!
原因:不知道..
解决方案:在代码中,只需在设置Adapter之前设置OnItemClickListener。它随机工作@@!
问题:OnItemClickListener根本没有响应!!!!
原因:不知道!!!
解决方案:在代码中,将ImageButton焦点设置为false
ImageButton button = (ImageButton) convertView.findViewById(R.id.imageButton);
button.setFocusable(false);
问题:OnItemClickListener只是没有响应。
原因:我认为您已将此属性设置为TextView:android:inputType=”textMultiLine”
解决方案:只需使用android:minLines/android:maxLines
删除该属性。
问题:OnItemClickListener只是没有响应。
原因:TextView会覆盖列表项的焦点。
解决方案:只需删除TextView上的属性android:autoLink
。
答案 2 :(得分:1)
它会起作用
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();
}
}
});
答案 3 :(得分:0)
如果您有自定义AdapterView,则需要引用该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();
}
}
});
答案 4 :(得分:-1)
在Activity类中尝试使用此行。
usersList.setOnItemClickListener(new OnItemClickListener() {
此行仅使用Activity类中的适配器,这不起作用。我认为不确定
usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {