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