0
Я хочу создать файловый менеджер. Этот алгоритм хорошо работал с ArrayAdapter, но когда я его переделал в SimpleAdapter, он переставал работать правильно. Основная проблема: когда я добавляю элемент в ArrayList, он дублируется. Я не знаю, в чем проблема. Помоги мне. Thaks.Проблема с SimpleAdapter
onActicityCreated метод:
private final String ATTRIBUTE_NAME_TEXT = "text";
private final String ATTRIBUTE_NAME_IMAGE = "image";
private String[] from = {ATTRIBUTE_NAME_TEXT, ATTRIBUTE_NAME_IMAGE};
private int[] to = {R.id.currPath, R.id.imageView};
@Override
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
Log.d(TAG, "Tab created");
if (savedInstanceState == null) {
Log.d(TAG, "SIS == null");
paths.add("/storage/emulated/0/");
paths.add("/storage/extSdCard/");
Map<String, Object> m = new HashMap<>();
ArrayList<Map<String, Object>> data = new ArrayList<>();
for(int i = 0; i < paths.size(); i++){
m.put("text", paths.get(i));
m.put(ATTRIBUTE_NAME_IMAGE, R.mipmap.ic_launcher);
data.add(m);
}
MySimpleAdapter adapter = new MySimpleAdapter(getActivity(), data, R.layout.item, from, to);
setListAdapter(adapter);//Creating a primary form of application
}
else{
Log.d(TAG, "SIS != null");
currentPath = savedInstanceState.get(KEY_PATH).toString();
paths = savedInstanceState.getStringArrayList(KEY_LIST);
Map<String, Object> m = new HashMap<>();
ArrayList<Map<String, Object>> data = new ArrayList<>();
for(int i = 0; i < paths.size(); i++){
m.put(ATTRIBUTE_NAME_TEXT, paths.get(i));
m.put(ATTRIBUTE_NAME_IMAGE, R.mipmap.ic_launcher);
data.add(m);
}
MySimpleAdapter adapter = new MySimpleAdapter(getActivity(), data, R.layout.item, from, to);
setListAdapter(adapter);
}
}
Каждый раз, используя этот цикл 'for', вы используете один и тот же экземпляр' Карта'. Вероятно, вы хотите создать новый каждый раз в верхней части цикла. –
о, дерьмо. Спасибо. Как я не заметил? –