2012-02-04 88 views
4

我在android中有一个AlertDialog,其中包含来自sqlite的好友列表。当我点击列表中的好友名称时,该好友被调用。我想要做的是将一个longclicklistener添加到列表中,以便我可以提示删除列表中的好友。 onlclick和onlongclick在同一元素上工作时遇到问题。有人可以在这里给我一个指针。我一直在使用android几个月。谢谢你的帮助!以添加OnLongClickListenerAdd onlongclick listener to alertdialog

private void displayBuddyList(String region) { 
     final String region2 = region; 
     Context context = getApplicationContext(); 
     dh = new DataBaseHelper(context); 

     List<String> bnames = dh.selectBuddies(); 
     Log.d(TAG, "Buddy Names: " +bnames); 



    final CharSequence[] buds = bnames.toArray(new CharSequence[bnames.size()]); 
// final CharSequence[] items = {"Mark", "Vikrant", "Olle,"Jane","Dan"}; 

    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Select a Buddy"); 
    builder.setItems(buds, new DialogInterface.OnClickListener() { 



     public void onClick(DialogInterface dialogInterface, int item) { 

     // showShortToast("Clicked on:"+buddy[item]); 
      String ptcode = buds[item].toString();; 




     if (region2 == "A") { 

       callbuddy(ptcode,region2); 

      } else if (region2 == "E") { 

         callbuddy(ptcode,region2); 


      } else if (region2 == "P") { 

         callbuddy(ptcode,region2); 



      } else { 
       showShortToast("We have a bug"); 
      } 

      return; 
     } 
    }); 
    builder.create().show(); 
} 

回答

9

的一种方式是通过重写对话框的OnShowListener并从昂秀(DialogInterface对话框)方法内设置一个OnItemLongClickListener。这给一试:

private void displayBuddyList(String region) { 
    final String region2 = region; 
    Context context = getApplicationContext(); 
    dh = new DataBaseHelper(context); 
    List<String> bnames = dh.selectBuddies(); 
    Log.d(TAG, "Buddy Names: " +bnames); 

final CharSequence[] buds = bnames.toArray(new CharSequence[bnames.size()]); 
// final CharSequence[] items = {"Mark", "Vikrant", "Olle,"Jane","Dan"}; 

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setTitle("Select a Buddy"); 
builder.setItems(buds, new DialogInterface.OnClickListener() 
{ 
    public void onClick(DialogInterface dialogInterface, int item) { 
    // showShortToast("Clicked on:"+buddy[item]); 
     String ptcode = buds[item].toString();; 
    if (region2 == "A") { 
      callbuddy(ptcode,region2); 
     } else if (region2 == "E") { 
        callbuddy(ptcode,region2); 
     } else if (region2 == "P") { 
        callbuddy(ptcode,region2); 
     } else { 
      showShortToast("We have a bug"); 
     } 
     return; 
    } 
}); 

final AlertDialog ad = builder.create(); //don't show dialog yet 
ad.setOnShowListener(new OnShowListener() 
{  
    @Override 
public void onShow(DialogInterface dialog) 
{  
     ListView lv = ad.getListView(); //this is a ListView with your "buds" in it 
     lv.setOnItemLongClickListener(new OnItemLongClickListener() 
    { 
    @Override 
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) 
    { 
     Log.d("Long Click!","List Item #"+position+"was long clicked"); 
     return true; 
    }   
    });  
} 
}); 
ad.show(); 

}