>In 实现了 OnItemLongClickListener。当长按列表项时,我启用了相关列表项的按钮。长按后,按钮启用成功,但 onListItemClick 不会被触发。如果我在列表项单击而不长单击的情况下,它会成功触发。为什么如果LongClickd在此之前触发了onListItemClick,则不会触发?
OnItemLongClickListener listener = new OnItemLongClickListener(){
public boolean onItemLongClick(AdapterView<?> av, View v, int position, long id) {
Account a = null;
a = (Account) av.getItemAtPosition(position);
Toast.makeText(AccountActivity.this, "Long Clicked : " + a.getAccountName(), Toast.LENGTH_LONG).show();
v.findViewById(R.id.btn_delete).setVisibility(View.VISIBLE);
return false;
}
};
getListView().setOnItemLongClickListener(listener);
public void onListItemClick(ListView l, View v, int position, long id) {
// Do something when a list item is clicked
Account a = null;
a = (Account) l.getItemAtPosition(position);
Toast.makeText(AccountActivity.this, a.getAccountName(), Toast.LENGTH_SHORT).show();
}
尝试像下面这样实现,
setOnItemLongClickListener
setOnItemClickListener
getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
Account a = null;
a = (Account) av.getItemAtPosition(position);
Toast.makeText(AccountActivity.this, "Long Clicked : " + a.getAccountName(), Toast.LENGTH_LONG).show();
v.findViewById(R.id.btn_delete).setVisibility(View.VISIBLE);
return false;
}
});
getListView().setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
Account a = null;
a = (Account) l.getItemAtPosition(position);
Toast.makeText(AccountActivity.this, a.getAccountName(), Toast.LENGTH_SHORT).show();
};
});
OnItemLongClickListener listener = new OnItemLongClickListener(){
public boolean onItemLongClick(AdapterView<?> av, View v, int position, long id) {
Account a = null;
a = (Account) av.getItemAtPosition(position);
Toast.makeText(AccountActivity.this, "Long Clicked : " + a.getAccountName(), Toast.LENGTH_LONG).show();
v.findViewById(R.id.btn_delete).setVisibility(View.VISIBLE);
return false;
}
};
getListView().setOnItemLongClickListener(listener);
我刚刚找到了问题的原因。这是我用来在单击 OnItemLongClick 时启用删除按钮的代码行。
v.findViewById(R.id.btn_delete).setVisibility(View.VISIBLE);
当我删除该行时,代码可以完美运行。但我仍然没有解决问题的方法。我需要有那行代码才能在单击 OnItemLongClick 时启用删除按钮。
我只是用ImageView替换了按钮。然后就没有问题了。这两项活动进展顺利。所以我意识到按钮有问题。我认为我们必须设置按钮中的一些属性才能在这种情况下正常运行。您可以模拟问题。1. 用户列表视图。2. 通过添加文本视图和图像按钮或按钮作为列表项来自定义列表视图。默认情况下,将按钮的可见性设置为不可见。3. 如上所述实现 onItemLongClick 事件,并在 ItemLongClicked 时制作按钮。4. 一旦您 ItemLong 单击列表项并使列表项中的按钮可见,特定列表项的 onListItemClick 事件将不起作用。