已经实现了OnItemLongClickListener。当LongClicked列表项时,我启用相关listItem的按钮。在LongClicked之后,按钮启用成功,但onListItemClick没有被触发。如果我onListItemClick没有LongClicked,它会成功触发。如果LongClicked在此之前触发,为什么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();
}
答案 0 :(得分:1)
尝试实施如下,
<强> 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();
};
});
答案 1 :(得分:1)
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时启用删除按钮。
答案 2 :(得分:0)
我刚用ImageView替换了按钮。然后没有问题。这两项活动进展顺利。所以我意识到按钮有问题。我认为我们必须在按钮中设置一些属性才能在这种情况下正常运行。您可以模拟问题。 1.用户列表视图。 2.通过添加TextView和ImageButton或Button作为ListItem来自定义列表视图。默认情况下,使按钮的可见性不可见。 3.如上所述实现onItemLongClick事件,并在ItemLongClicked时创建按钮。 4.一旦ItemLongClick一个ListItem并使ListItem中的按钮可见,特定ListItem的onListItemClick事件就不起作用。