开关盒在第二次长按时工作,但不能在第一次长按时工作

时间:2014-09-14 11:53:04

标签: android switch-statement android-alertdialog

我正在尝试捕获长按事件并在列表视图中显示一个项目的警告框..我正在使用switch case ...这样工作正常。

问题:

当我长按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;
            }
        }); 

1 个答案:

答案 0 :(得分:1)

我认为这是因为你在onLongClickListener内为你的观点注册onItemLongClick,所以在你第一次点击你的ListView项目时,它只是在你的观点上注册onLongClickListener,然后在第二次长时间点击时,您的项目视图的长按将按预期工作。尝试在getView()中为ListView的视图注册监听器。