2014-09-14 3 views
0

Я пытаюсь захватить событие с длинным кликом и отображать окно предупреждения элементов внутри вида списка. Я делаю это с помощью футляра-переключателя ... который был работающ отлично.случай переключателя, работающий во втором длинном нажатии, но не при первом длинном нажатии

Издание:

, когда я долгое нажатие элементы внутри ListView в first long press не отображается окно предупреждения, но если я отображается то же second time окно предупреждения .. Я не мог понять поведение ...

Могут ли эксперты помочь мне с этим, пожалуйста, сообщите мне, где я делаю неправильно, и также исправлю меня, чтобы при первом нажатии мне нужно было установить окно предупреждения.

Код:

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 ok Спасибо за ваш ответ ... но как я могу это преодолеть ... – Siva

+0

вам нужно зарегистрировать слушателей для держателей, когда они будут созданы. Совет. Внутри «getView» адаптера. – Simas

ответ

1

Я думаю, что это из-за вас регистрации onLongClickListener для Фототуров внутри onItemLongClick, так что в первый раз, когда вы Длинные щелкая ваши ListView товары, это просто зарегистрироваться onLongClickListener для Views, то во второй раз, когда вы долго нажимаете кнопку, LongClick вашего представления элементов будет работать так, как ожидалось. попробуйте зарегистрировать слушателей для своих представлений ListView внутри getView().

+0

спасибо за ваш ответ ... но я не мог понять, можете ли вы, пожалуйста, рассказать больше? – Siva

+0

, но как я могу преодолеть ... поскольку элементы присутствуют внутри списка списка. Я не могу объявить их за пределами – Siva

+0

, вы можете зарегистрировать слушателей для своего ListView, просмотра внутри getView(). –

Смежные вопросы