Добавить onlongclick слушатель в alerttdialog - PullRequest
4 голосов
/ 05 февраля 2012

У меня есть AlertDialog в Android, который содержит список друзей из sqlite.Когда я нажимаю на имя друга в списке, его называют.Что я хочу сделать, так это добавить в список longclicklistener, чтобы мне предлагалось удалить друзей из списка.У меня проблемы с тем, чтобы onlclick и onlongclick работали над одним и тем же элементом.Может кто-нибудь дать мне указатель здесь.Я работаю с Android в течение нескольких месяцев.Спасибо за любую помощь!

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();
}

1 Ответ

9 голосов
/ 04 января 2013

один из способов добавить OnLongClickListener - переопределить OnShowListener диалога и установить OnItemLongClickListener из метода onShow (диалог DialogInterface). Попробуйте это:

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();

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...