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

Ошибка The content of the adapter has changed but ListView did not receive a notification - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Toast после AlertDialog.Builder http://www.cyberforum.ru/android-dev/thread1407852.html
Добрый день. Нужно вывести Toast после нажатия setPositiveButton, в зависимости от результата. case (R.id.newFolderBtn): final String result = ""; // переменная результата final...
Программирование Android Верстка в AndroidStudio, превью Доброго времени суток. Столкнулись с проблемой, хотя даже не с проблемой, а с неудобством. В AndroidStudio превью активити не соответствует действительности (см. вложение). На эмуляторе и реальном... http://www.cyberforum.ru/android-dev/thread1407815.html
С чего начать написание приложения? И что понадобится для его реализации Программирование Android
Доброго времени суток! Есть задание сделать примитивное андройд-приложение. Вот задание: Реализовать систему ввода и отображения информации о студентах университета, включающую следующие сущности и...
Как изменять item listview не перерисовывая весь список? Программирование Android
Здравствуйте! Имеется активити с выводом list при помощи SimpleCursorAdapter. При нажатии на любой item переносит в другой активити, где можно отредактировать запись. Далее по нажатию на back меня...
Программирование Android Обращение к функции находящейся не в MainActivity http://www.cyberforum.ru/android-dev/thread1407177.html
Доброго времени суток! Имеется MainActivity.java и HybridMap.java. Мне необходимо при нажатии кнопки обратиться к процедуре в HybridMap. Процедура никакие данные не возвращает, просто нужно...
Программирование Android Реакция на смс Всем привет! Ребята спасайте, срочно нужно написать приложение на андроид, чтобы происходила определенная реакция на смс, в данном случае на координаты отправленные в смс на телефон, нужно показывать... подробнее

Показать сообщение отдельно
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
30.03.2015, 16:53  [ТС]
Ну вот код
Кликните здесь для просмотра всего текста

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
public class MainActivity extends FragmentActivity 
    implements OnRefreshListener {
 
    private ListView lv;
    private LinkedList<DataEntity> data = new LinkedList<DataEntity>();
    private SwipeRefreshLayout swipeLayout;
    private CustomAdapter adapter;
    private HandlerLoadData handler;
 
    @SuppressLint("NewApi")
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        handler = new HandlerLoadData(this);
        
        swipeLayout = (SwipeRefreshLayout) findViewById(R.id.SwipeRefreshLayout);
        swipeLayout.setOnRefreshListener(this);
        
        lv = (ListView) findViewById(R.id.lv);
        
        data.clear();
        adapter = new CustomAdapter(getApplicationContext(), R.layout.item, R.id.txtDate, data);
        adapter.setNotifyOnChange(true);
        lv.setAdapter(adapter);
        //обновляем список в отдельном потоке
        updateListView(false);
      }
     
      private void setAdapterFromDB(String where, String[] where_args, String mode){
        //тут наполняем список записями из БД
        data.add(new DataEntity(......));
      }     
 
    /**метод обновления списка*/
    @SuppressWarnings("deprecation")
    private void updateListView(boolean restore){
        lvindex = lv.getFirstVisiblePosition();
        View v = lv.getChildAt(0);
        lvposition = (v == null) ? 0 : v.getTop();
        lvrestore = restore;
        showDialog(DLG_PROGRESS); // Показываем диалог прогресса
        mPrev = 0;
        // Запускаем в отдельном потоке загрузку данных
        new Thread(new Runnable() {
            public void run() {             
                data.clear();
                setAdapterFromDB(null,null,"");
                handler.sendEmptyMessage(0); // посылаем уведомление об окончании загрузки
            }
        }).start();
    }
    
    private class GetDataTask extends AsyncTask<Void, Void, String[]> {
        @Override
        protected void onPostExecute(String[] result) {
            setDataAdapter("");         
            swipeLayout.setRefreshing(false);
            super.onPostExecute(result);
        }
 
        @Override
        protected String[] doInBackground(Void... params) {
            updateListView_PullRefresh();
            return null;
        }
    }
    
    static class HandlerLoadData extends Handler {
        WeakReference<MainActivity> wrActivity;
        public HandlerLoadData(MainActivity activity) {
            wrActivity = new WeakReference<MainActivity>(activity);
        }
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            MainActivity activity = wrActivity.get();
            if (activity != null) activity.closeDialogLoadData();
        }
    }
 
    @SuppressWarnings("deprecation")
    public void closeDialogLoadData() {
        dismissDialog(DLG_PROGRESS);
        setDataAdapter("");
        if(lvrestore) lv.setSelectionFromTop(lvindex, lvposition);// restore index and position
    }     
 
    private void setDataAdapter(String strFind){
        adapter.sort(new DateSort());
        adapter.notifyDataSetChanged();
    }
    
    @Override
    public void onRefresh() {
        swipeLayout.setRefreshing(true);
        new GetDataTask().execute();
    }
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru