如何检测列表中是否单击了两次相同的目录?

时间:2013-07-05 00:56:33

标签: java android list ftp

我制作了一个FTP / FileBrowser活动,让用户单击一个目录导航到它,但是我想进行双击,因为列表是一个多选项,用于批量删除,下载等。我创建了一个名为remclickcount的int var,每次单击一个列表项时都会实现++,但是如果单击“目录A”两次,它就可以正常工作。但是,如果单击目录A,然后单击目录B,它将导航到目录B.如何计算单个目录的单击?

remote.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                r_itla.setSelectedPosition(position);
                String selectedFile = r_directoryEntries.get(position)
                        .getText();
                boolean isDirectory = map.get(selectedFile).booleanValue();
                if (isDirectory){
                    remclickcount++;
                    if(remclickcount==2) {

                    r_directoryEntries.clear();
                    r_itla.notifyDataSetChanged();
                    ftpPrintFilesList(selectedFile);
                    try {
                        FTPHelper.mFTPClient
                                .changeWorkingDirectory(selectedFile.toString());
                        remclickcount=0;
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    }
                } else if (!isDirectory) {
                    // Toast.makeText(FTPConnector.this, selectedFile,
                    // Toast.LENGTH_LONG).show();
                    currentRemoteFile = selectedFile;
                }

            }
        });

工作代码:

remote.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                r_itla.setSelectedPosition(position);
                String selectedFile = r_directoryEntries.get(position)
                        .getText();
                boolean isDirectory = map.get(selectedFile).booleanValue();
                if (isDirectory){
                    if(selectedFile.equals(lastClickSelectedFile)) {

                    r_directoryEntries.clear();
                    r_itla.notifyDataSetChanged();
                    ftpPrintFilesList(selectedFile);
                    try {
                        FTPHelper.mFTPClient
                                .changeWorkingDirectory(selectedFile.toString());

                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    }else if(!selectedFile.equals(lastClickSelectedFile)){
                        lastClickSelectedFile = selectedFile;
                    }
                } else if (!isDirectory) {
                    // Toast.makeText(FTPConnector.this, selectedFile,
                    // Toast.LENGTH_LONG).show();
                    currentRemoteFile = selectedFile;
                }

            }
        });

1 个答案:

答案 0 :(得分:2)

我可以假设,如果用户点击目录A,那么在目录B上,然后是目录A,不会计算为双击?如果这是正确的,那么你真的不想计算每个文件的点击次数。我要做的是在你的班级lastClickSelectedFile中定义一个私人String成员。然后,如果他们点击目录:如果selectedFile.equals(lastClickSelectedFile),则用户双击。否则,请设置lastClickSelectedFile = selectedFile,不要采取任何操作。如果用户点击了其他内容,请设置lastClickSelectedFile = null。如果这不能满足您的需求,请澄清。