Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:多选选择列表-仅当选中复选框而不在文本视图中时才选中复选框_Java_Android - Fatal编程技术网

Java Android:多选选择列表-仅当选中复选框而不在文本视图中时才选中复选框

Java Android:多选选择列表-仅当选中复选框而不在文本视图中时才选中复选框,java,android,Java,Android,我正在创建一个显示目录名称的多选列表视图。 由于是多选,每个项目都包含一个文本视图和一个复选框。 默认情况下,当我单击任何项目时,复选框会被选中/取消选中。 这不是我想要的功能。 因为,我正在显示目录的名称,我希望当用户单击项目时,不要选中复选框,而是显示一个包含该目录子文件夹名称的新列表 简单地说,当选中项目的textview时,应显示一个新列表&当选中该复选框时,仅应选中/取消选中该复选框 下面是我至今的代码: public class DirectoryListing extends Ac

我正在创建一个显示目录名称的多选列表视图。 由于是多选,每个项目都包含一个文本视图和一个复选框。 默认情况下,当我单击任何项目时,复选框会被选中/取消选中。 这不是我想要的功能。 因为,我正在显示目录的名称,我希望当用户单击项目时,不要选中复选框,而是显示一个包含该目录子文件夹名称的新列表

简单地说,当选中项目的textview时,应显示一个新列表&当选中该复选框时,仅应选中/取消选中该复选框

下面是我至今的代码:

public class DirectoryListing extends Activity implements OnItemClickListener {

    ListView dirlv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.directorylisting);
        try {
            ArrayList<String> dirList = new ArrayList<String>();
            dirList = getAllDirList();
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_multiple_choice,
                    android.R.id.text1, dirList);
            dirlv = (ListView) findViewById(R.id.lvDirList);
            dirlv.setAdapter(adapter);
            dirlv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
            dirlv.setOnItemClickListener(this);

        } catch (Exception e) {
            Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show();
        }

    }

    private ArrayList<String> getAllDirList() {
        ArrayList<String> result = new ArrayList<String>();
        File home = new File("/");
        File[] files = home.listFiles();
        for (File file : files) {
            if (file.isDirectory()) {
                result.add(file.getName());
            }
        }
        return result;
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        try {
            TextView tv = (TextView) view;
            //TODO
        } catch (Exception e) {
            Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show();
        }
    }

}
public类DirectoryListing扩展了活动实现{
ListView-dirlv;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.directorylisting);
试一试{
ArrayList dirList=新的ArrayList();
dirList=getAllDirList();
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple\u list\u item\u多选,
android.R.id.text1,dirList);
dirlv=(ListView)findViewById(R.id.lvDirList);
直接设置适配器(适配器);
dirlv.setChoiceMode(ListView.CHOICE\u MODE\u MULTIPLE);
dirlv.setOnItemClickListener(本);
}捕获(例外e){
Toast.makeText(例如toString(),Toast.LENGTH_SHORT).show();
}
}
私有ArrayList getAllDirList(){
ArrayList结果=新建ArrayList();
文件主目录=新文件(“/”);
File[]files=home.listFiles();
用于(文件:文件){
if(file.isDirectory()){
add(file.getName());
}
}
返回结果;
}
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
试一试{
TextView电视=(TextView)视图;
//待办事项
}捕获(例外e){
Toast.makeText(例如toString(),Toast.LENGTH_SHORT).show();
}
}
}

您不认为这会误导您的用户吗?每次看到带有复选框的列表项时,您都会假定单击它将选中/取消选中该复选框。尽量避免不直观的行为。我也想过。但我需要这个功能。我也尝试过可扩展,但如果有很多递归子文件夹,那么它看起来会很糟糕。任何建议。如果我正确理解您的逻辑,您需要选择多个文件,因此您应该找到一种方法,仅在表示文件的列表项上放置复选框,而不是在目录上。因此,单击文件夹将展开该文件夹,单击文件将选中/取消选中它。嗯……实际上,我正在为图像文件构建此文件&图像文件太多了。我不希望用户选择每个文件,这就是为什么。有一个应用程序,即。MoboPlayer,它正是我扫描文件夹所需要的。这样更容易实现某种全选功能