android:onListItemClick 在发生 onItemLongClick 时不会触发



>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 事件将不起作用。

最新更新