2012-05-08 63 views
0

我有一个listView和onClickListener,onClick做som的东西,它的工作原理。现在我想在LongClick上显示AlertDialog,但没有任何反应。我已将android:longClickable="true"添加到清单中的ListView中,但仍然没有任何反应。显示AlertDialog onLongClick

listView.setOnLongClickListener(new OnLongClickListener() { 

    public boolean onLongClick(View v) { 

     final CharSequence[] items = {"Revansch!", "Lägg till som vän","Ta bort spelet"}; 

     AlertDialog.Builder builder = new AlertDialog.Builder(ChallengeList.this); 

     builder.setItems(items, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int item) { 
       Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
     return true; 

    } 

}); 

任何人都知道为什么它不起作用? 在此先感谢!

回答

3

试试这个,

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
    @Override 
    public boolean onItemLongClick(AdapterView<?> av, View v, int pos, final long id) { 

     final CharSequence[] items = {"Revansch!", "Lägg till som vän","Ta bort spelet"}; 
     AlertDialog.Builder builder = new AlertDialog.Builder(ChallengeList.this); 
     builder.setItems(items, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int item) { 
       Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 

     return true; 
    } 
}); 
+1

它的工作原理没有@Override – simtaxman

+2

很好..!去掉它..! :-) – user370305

0

我试过这个。它的工作。

myList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> av, View v, int pos, long id) { 
      return onLongListItemClick(v,pos,id); 
     } 
     protected boolean onLongListItemClick(View v, final int pos, long id) { 

      // write code for AlertDialog 
      return true; 
     } 

    }); 

您还需要重写onItemLongClick方法。