2013-06-06 35 views
7

Trong ListView Tôi đang sử dụng cả hai setOnItemClickListener()setOnItemLongClickListener(). Khi tôi bấm vào một mục nó hoạt động tốt nhưng khi tôi bấm lâu vào một mục đôi khi cả hai người nghe được bắn cùng một lúc hoặc làm việc cùng một lúc. Tại sao?sử dụng cả setOnItemClickListener và setOnItemLongClickListener cả hai người nghe cùng một lúc hoặc làm việc cùng lúc.Why

/** 
* on click of list view item show the run time webview. 
*/ 
mListViewStar.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 
     isHome = true; 
     Animation translate1 = AnimationUtils.loadAnimation(Home.this, 
       R.anim.tran_right); 
     mRelativeLayout.setVisibility(View.GONE); 
     mRelativeLayout.startAnimation(translate1); 
     // mProgressBar.setVisibility(View.VISIBLE); 
     mProgressDialog = ProgressDialog.show(Home.this, "", 
       "Loading..."); 
     addWebView(mArrayListJBSelectedUrls.get(arg2) 
      .getStrSelectedWebsiteUrl().toString(), arg2); 
    } 
}); 
/** 
* on long press delete item from list view 
*/ 
mListViewStar.setOnItemLongClickListener(new OnItemLongClickListener() { 
    @Override 
    public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 
     position = arg2; 
     AlertDialog.Builder mAlert = new AlertDialog.Builder(Home.this); 
     mAlert.setTitle(getString(R.string.alert)); 
     mAlert.setIcon(R.drawable.logo); 
     mAlert.setMessage(getString(R.string.delete_item_dialog)); 
     mAlert.setPositiveButton(getString(R.string.yes), 
      new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, 
         int which) { 
        mDataBaseMethod.open(); 
        Log.i("Delete", "" 
         + mArrayListJBSelectedUrls 
         .get(position) 
         .getStrSelectedUrlId()); 
        mDataBaseMethod 
         .deleteWebSites(mArrayListJBSelectedUrls 
         .get(position) 
         .getStrSelectedUrlId() 
         .toString()); 
        mArrayListJBSelectedUrls.remove(position); 
        starBaseAdapter.notifyDataSetChanged(); 
        mDataBaseMethod.close(); 
       } 
     }); 
     mAlert.setNegativeButton(getString(R.string.no), 
      new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, 
         int which) { 
        dialog.dismiss(); 
       } 
     }); 
     AlertDialog alertDialog = mAlert.create(); 
     alertDialog.show(); 
     return true; 
    } 
}); 
+0

Điều này không xảy ra, bạn có thể đăng một số mã của mình không? Nếu một sự kiện được chuyển tới onItemLongClickListener, nó sẽ không kích hoạt tiêu chuẩn onItemClickListener. – Bobbake4

Trả lời

-1

thử sửa chữa

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
      long arg3) 

public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) 

để

public void onItemClick(AdapterView<?> arg0,final View arg1,final int arg2, 
      final long arg3) 

public boolean onItemLongClick(AdapterView<?> arg0,final View arg1, 
       final int arg2,final long arg3) 
26

thêm trở lại đúng vào onItemLongClick

+0

thanks onItemLongClick trả về true sau đó onItemClick và cả hai người nghe đều không làm việc cùng nhau ... !!! –

+1

nó hoạt động ...! cảm ơn –

0

setOnClickListener kích hoạt trước tiên như bị rách, vấn đề bắt đầu khi bạn muốn cả hai hành động với nhau, để tránh điều này, bạn cần phải trả về true; trên OnItemLongClickListener.

lv_frag_three.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
       //Groups clickedObj = (Groups) adapterView.getItemAtPosition(i); 
       // your actions 
      } 
     }); 
}); 

    lv_frag_three.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
        @Override 
        public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { 
         return true; 
        } 
       }); 
Các vấn đề liên quan