2014-09-14 2 views
0

긴 클릭 이벤트를 캡처하고 목록보기 내부에 항목의 경고 상자를 표시하려고합니다. 스위치 케이스를 사용하여 수행하고 있습니다 ... ... 잘 작동합니다.스위치 케이스가 두 번째 길게 누르기에서 작동하지만 첫 번째 길게 누르기가 아님

문제 :

것은 내가 길게 누르면 아무런 경고 상자가 내가 할 경우하지만 같은 second time 경고 상자가 표시됩니다 표시되지 않습니다 first long press에서 목록보기 내부의 항목 .. 내가 행동을 이해할 수 없었다 ...

전문가도이 문제를 도와 줄 수 있습니다. 내가 잘못하고있는 부분을 알려주고 나를 바로 잡으십시오. 그러면 긴 언론에서 경고 상자를 가져올 수 있습니다.

코드 :

Listview.setOnItemLongClickListener(new OnItemLongClickListener() { 

      @Override 
      public boolean onItemLongClick(final AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 
       // TODO Auto-generated method stub 

       System.out.println("Inside listview long click"); 


        final ViewHolder myviewholder3=new ViewHolder(); 
        myviewholder3.cb=(CheckBox) arg1.findViewById(R.id.checkBox1); 
        myviewholder3.view1=(Button) arg1.findViewById(R.id.button1); 

        System.out.println(arg1.getId()); 
        System.out.println("cb"+R.id.checkBox1); 
        System.out.println(arg1.getId()); 
        System.out.println("butt"+R.id.button1); 
        switch(arg1.getId()){ 

        case R.id.checkBox1: 
        myviewholder3.cb.setOnLongClickListener(new OnLongClickListener() { 

         @Override 
         public boolean onLongClick(View v) { 
          // TODO Auto-generated method stub 
          AlertDialog.Builder Alert1=new AlertDialog.Builder(sm.this); 

          StockAlert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 

           @Override 
           public void onClick(DialogInterface dialog, int which) { 
            // TODO Auto-generated method stub 

           } 
          }); 
          Alert1.show(); 
          return false; 
         } 
        }); 

        break; 

        case R.id.button1: 
        myviewholder3.view1.setOnLongClickListener(new OnLongClickListener() { 

         @Override 
         public boolean onLongClick(View v) { 
          // TODO Auto-generated method stub 
          AlertDialog.Builder ViewDetailAlert=new AlertDialog.Builder(sm.this); 

          Alert2.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 

           @Override 
           public void onClick(DialogInterface dialog, int which) { 
            // TODO Auto-generated method stub 

           } 
          }); 
          Alert2.show(); 
          return false; 
         } 
        }); 
        break; 

      default: 
       System.out.println("No Selection"); 
        } 
        return false; 
      } 
     }); 
+0

홀더 리스너는 목록 항목을 처음 클릭 할 때만 설정됩니다. – Simas

+0

@ user3249477 답장을 보내 주셔서 감사합니다.하지만 어떻게이 문제를 극복 할 수 있습니까? – Siva

+0

소유자를 만들 때 소유자를 등록해야합니다. 팁 : 어댑터의'getView' 내부. – Simas

답변

1

나는, 당신이 긴 당신의 ListView 항목을 클릭하는 처음에, 그것은 당신의 조회수에 대한 onLongClickListener을 등록 할 수 있도록 그 때문에 당신이 onItemLongClick 안에 당신 조회에 대한 onLongClickListener를 등록의 생각 그런 다음 두 번째로 길게 클릭하면 항목 뷰의 LongClick이 예상대로 작동합니다. getView() 내 ListView 뷰에 대한 리스너 등록.

+0

답장을 보내 주셔서 감사합니다 ...하지만 더 이해할 수 없습니까? – Siva

+0

하지만 어떻게 극복 할 수 있습니까? 항목이 목록보기 안에 존재하므로 외부에 선언 할 수 없습니다. – Siva

+0

ListView에 대한 리스너를 등록 할 수 있으며 getView() 내부의보기를 등록 할 수 있습니다. –