Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
#1

ArrayAdapter вылет на clear и add - Программирование Android

17.05.2013, 14:54. Просмотров 690. Ответов 8
Метки нет (Все метки)

Приветствую!
Вылет на clear. Если эту строку закоментить то вылет на add. В чем может быть проблема?

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import java.io.File;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
 
public class FileSystemTest extends Activity {
    
    final String MAIN_DIRECTORY = "/";
    final String LOG_TAG = "myLogs";
    String directoryAddress = "";
    
    
    
    File mainDirectory = new File(MAIN_DIRECTORY);
    String folders []; 
    ListView lvFolders;
    TextView tvFolderAdress;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_file_system_test);
        lvFolders = (ListView)findViewById(R.id.lvFolder);
        tvFolderAdress = (TextView)findViewById(R.id.folderAdress);
        tvFolderAdress.setText("/");
        
        folders = mainDirectory.list();
        
        final ArrayAdapter<String> mainDirectoryAdapter = new ArrayAdapter<String>(this,R.layout.row, folders); 
        lvFolders.setAdapter(mainDirectoryAdapter);
        
        lvFolders.setOnItemClickListener(new OnItemClickListener() {
            
            public void onItemClick(AdapterView<?> parent, View view, int position, long id){
                Log.d(LOG_TAG, folders[position]);
                directoryAddress+="/" + folders[position];
                Log.d(LOG_TAG, directoryAddress);
                File subDirectory = new File(directoryAddress);
                folders = subDirectory.list();
                mainDirectoryAdapter.clear(); 
                mainDirectoryAdapter.add("...");
                for (String folder : folders) {
                    mainDirectoryAdapter.add(folder);
                }
                 mainDirectoryAdapter.notifyDataSetChanged();
                 tvFolderAdress.setText(directoryAddress);
             }
        });
    }
    
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
17.05.2013, 14:58     ArrayAdapter вылет на clear и add #2
логи где?
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
17.05.2013, 15:07  [ТС]     ArrayAdapter вылет на clear и add #3
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Thread [<1> main] (Suspended (exception UnsupportedOperationException)) 
    <VM does not provide monitor information>   
    ArrayAdapter.clear() line: 260  
    FileSystemTest$1.onItemClick(AdapterView, View, int, long) line: 50 
    ListView(AdapterView).performItemClick(View, int, long) line: 298   
    ListView(AbsListView).performItemClick(View, int, long) line: 1088  
    AbsListView$PerformClick.run() line: 2861   
    AbsListView$1.run() line: 3535  
    Handler.handleCallback(Message) line: 615   
    ViewRootImpl$ViewRootHandler(Handler).dispatchMessage(Message) line: 92 
    Looper.loop() line: 137 
    ActivityThread.main(String[]) line: 4966    
    Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
    Method.invoke(Object, Object...) line: 511  
    ZygoteInit$MethodAndArgsCaller.run() line: 791  
    ZygoteInit.main(String[]) line: 558 
    NativeStart.main(String[]) line: not available [native method]
Stacktace в логах ничего не пишет
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
17.05.2013, 15:14     ArrayAdapter вылет на clear и add #4
удаляйте/добавляйте в сам лист а не в адаптер. сейчас гляну реализацию адаптера.

Добавлено через 2 минуты
та вроде и так должно работать.

Цитата Сообщение от KillAndEat Посмотреть сообщение
в логах ничего не пишет
а где вы смотрели? в LogCat?
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
17.05.2013, 15:23  [ТС]     ArrayAdapter вылет на clear и add #5
Да смотрел в LogCat. Т.е. в любом случае придется создавать лист и уже его передавать в адаптер с помощью метода add? А метод clear очищает только лист... Я правильно понял?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
17.05.2013, 15:29     ArrayAdapter вылет на clear и add #6
Цитата Сообщение от KillAndEat Посмотреть сообщение
Да смотрел в LogCat.
значит плохо смотрели.


Java
1
2
3
4
5
List<String> foldersList = ListArrays.asList(folders);
ArrayAdapter<String> mainDirectoryAdapter = new ArrayAdapter<String>(this,R.layout.row, foldersList );
foldersList .clear(); 
foldersList .add("...");
mainDirectoryAdapter.notifyDataSetChanged();
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
17.05.2013, 19:51  [ТС]     ArrayAdapter вылет на clear и add #7
Что то я толком так и не смог заставить работать эту конструкцию) В итоге пришел к этому.

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_file_system_test);
        lvFolders = (ListView)findViewById(R.id.lvFolder);
        tvFolderAdress = (TextView)findViewById(R.id.folderAdress);
        tvFolderAdress.setText("/");
        
        output(mainDirectory);
        
        lvFolders.setOnItemClickListener(new OnItemClickListener() {
            
            public void onItemClick(AdapterView<?> parent, View view, int position, long id){
                
                output(new File("/").listFiles()[position]);
                }
        });
        
      }
    
    public void output (File f){
        ArrayList<String> directory = new ArrayList<String>();
        directory.clear();
        for (String s : f.list()) {
            directory.add(s);
            }
        ArrayAdapter<String> currentDir = new ArrayAdapter<String>(getApplicationContext(), R.layout.row,directory);
        lvFolders.setAdapter(currentDir);
    }


Но с какого то фига текст в листе стал серого цвете О_о
Картинку прилагаю.


XML

Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="40sp"
    android:padding="5dip"
    android:gravity="center_vertical"
/>
 
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  
  <TableRow>
    <TextView android:id="@+id/folderAdress"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
             />  
  </TableRow>
  <TableRow>
    <ListView android:id="@+id/lvFolder"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:layout_weight="2"
          />
  </TableRow> 
</TableLayout>
Миниатюры
ArrayAdapter вылет на clear и add  
V0v1k
17.05.2013, 20:06
  #8

Не по теме:

магия

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2013, 16:24     ArrayAdapter вылет на clear и add
Еще ссылки по теме:
Собственный адаптер на основе ArrayAdapter Android
Android Как правильно настроить ArrayAdapter?
Выкидывает NullPointerException при заполнении данных через ArrayAdapter Android
Android List.clear
Android Animation (like Clear app)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
18.05.2013, 16:24  [ТС]     ArrayAdapter вылет на clear и add #9
А по теме?)Никаких предположений?)
Yandex
Объявления
18.05.2013, 16:24     ArrayAdapter вылет на clear и add
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru