=== РЕДАКТИРОВАТЬ ===
Есть ли причина, по которой что-то подобное не работает, я чувствую, что должно, но это не сработает lView.getChildCount () возвращает 0, даже если в списке много, а затем это вызывает принудительное закрытие
for (int i = 0; i < lView.getChildCount(); i++) {
ImageView imageView = (ImageView) lView.getChildAt(i).findViewById(R.id.listIcon);
imageView.setImageResource(R.drawable.someIcon);
}
==================================
Сначала я знаю, что вы можете создавать собственные адаптеры, и все, что я просто думаю для своих целей, так как это простой файловый браузер, ничего сложного, может быть, это можно сделать.
В любом случае, как я уже сказал, я работаю над очень простым файловым браузером для части приложения, которое я пишу. Я установил его, чтобы показать все файлы в каталоге и рядом с ним значок. На данный момент значок одинаков для каждого файла, но я хотел бы иметь значок для каждого типа файла (например, ZIP, папок, скриптов и т. Д.)
То, что я хотел бы сделать, это после того, как массив и все было сделано, просто сделайте так, как для каждой позиции, проверьте элемент и, если он заканчивается, скажем .zip, измените значок что-нибудь в соответствии с этим
for(eachposition){
if(position.endsWith(".zip"){
ImageView iv = (ImageView) findViewById(R.id.listIcon);
iv.setImageResource(R.drawable.zipImage);
}else if(position.endsWith(".sh"){
ImageView iv = (ImageView) findViewById(R.id.listIcon);
iv.setImageResource(R.drawable.scriptImage);
}else{
ImageView iv = (ImageView) findViewById(R.id.listIcon);
iv.setImageResource(R.drawable.generalImage);
}
}
В любом случае, вот код, который я использую в настоящее время, на всякий случай, если это необходимо, и спасибо за любую помощь или ввод
public class SampleList extends ListActivity {
private List<String> item = null;
private List<String> path = null;
private String root = "/sdcard/somefolder/";
private String current = null;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
context = getApplicationContext();
try{
getDir(root);
File directory = new File(root);
File[] contents = directory.listFiles();
if (contents.length == 0) {
TextView t = new TextView(this);
t=(TextView)findViewById(R.id.empty);
t.setText(R.string.emptyFol);
}
}catch (Exception e) {
Toast.makeText(NandPicker.this, R.string.nMount, Toast.LENGTH_LONG).show();
}
}
private void getDir(String dirPath){
item = new ArrayList<String>();
path = new ArrayList<String>();
File f = new File(dirPath);
File[] files = f.listFiles();
for(int i=0; i < files.length; i++){
File file = files[i];
//Problem was adding the path without the /
//path.add(file.getPath());
if(file.isDirectory()){
path.add(file.getPath()+"/");
item.add(file.getName() + "/");
}else{
path.add(file.getPath());
item.add(file.getName());
}
}
current = dirPath;
ArrayAdapter<String> fileList = new ArrayAdapter<String>(this, R.layout.row, R.id.rowTextView, item);
setListAdapter(fileList);
class IgnoreCaseComparator implements Comparator<String> {
public int compare(String strA, String strB) {
return strA.compareToIgnoreCase(strB);
}
}
IgnoreCaseComparator icc = new IgnoreCaseComparator();
java.util.Collections.sort(path,icc);
java.util.Collections.sort(item,icc);
}
@Override
protected void onListItemClick(ListView l, View v, final int position, long id) {
}
}