1

已经实现了 OnItemLongClickListener。当 LongClicked 列表项时,我启用了相关列表项的按钮。在 LongClicked 之后,按钮成功启用,但 onListItemClick 不会被触发。如果我在没有 LongClicked 的情况下 onListItemClick,它会成功触发。如果 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();
  }
4

3 回答 3

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();  
   };
});
于 2012-12-07T12:19:08.550 回答
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 时,我需要使用该行代码来启用删除按钮。

于 2012-12-10T13:38:21.960 回答
0

我只是用 ImageView 替换了按钮。然后就没有问题了。两项活动进展顺利。所以我意识到按钮有问题。我认为我们必须在按钮中设置一些属性才能在这种情况下正常工作。您可以模拟问题。1. 使用 Listview。2. 通过添加一个TextView 和一个ImageButton 或一个Button 作为ListItem 来自定义列表视图。默认情况下将按钮的可见性设置为不可见。3、如上实现onItemLongClick事件,在ItemLongClicked时制作按钮。4. 一旦您 ItemLongClicked 一个 ListItem 并使 ListItem 中的按钮可见,特定 ListItem 的 onListItemClick 事件将不起作用。

于 2012-12-13T07:28:11.813 回答