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

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

Войти
Регистрация
Восстановить пароль
 
banga_ivan
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 10
#1

Обновление содержимого Recyclerview - Android

17.11.2015, 21:57. Просмотров 734. Ответов 2
Метки нет (Все метки)

Всем привет. Изучаю Android. Разрабатываю первое приложение. Создал список с помощью Recyclerview. Возникла проблема. После записи данных в БД новый пункт появляется только после перезапуска приложения. Объясните пожалуйста в теории как заставить обновляться этот список.

Код проекта: https://bitbucket.org/devbanha/smart-wallet/src
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2015, 21:57     Обновление содержимого Recyclerview
Посмотрите здесь:

Обновление содержимого ViewPager Android
Android FloatingButton + RecyclerView+ RefreshLayout
Android RecyclerView использование ItemDecoration
RecyclerView сохранения в JSON Android
Android Обновление содержимого экрана
Android RecyclerView и SQLite
RecyclerView Android
RecyclerView click Android
Retrofit Recyclerview Android
Android Принцип работы RecyclerView
Android Recyclerview-stickyheaders
RecyclerView и SQLite Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Xotabu4
94 / 94 / 2
Регистрация: 02.02.2013
Сообщений: 286
17.11.2015, 23:38     Обновление содержимого Recyclerview #2
используйте notifyDataSetChanged()
banga_ivan
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 10
18.11.2015, 12:23  [ТС]     Обновление содержимого Recyclerview #3
А можно немного подробнее? Нашел некоторую информацию об использовании этого метода. Попробовал использовать. Планировал что при удалении данных из БД список сразу обновится (метод onOptionsItemSelected). Не работает. Объясните пожалуйста что делаю не так.

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
100
101
102
103
104
105
106
107
108
109
110
111
package info.devbanha.smartwallet.activity;
 
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.TextView;
 
import java.util.ArrayList;
import java.util.List;
 
import info.devbanha.smartwallet.R;
import info.devbanha.smartwallet.adapters.RecyclerViewAdapter;
import info.devbanha.smartwallet.data.ItemData;
import info.devbanha.smartwallet.data.database.DataBaseController;
import info.devbanha.smartwallet.data.database.ItemDB;
import info.devbanha.smartwallet.tag.Tags;
 
public class MainActivity extends AppCompatActivity {
 
    private TextView textView;
    private RecyclerViewAdapter recyclerViewAdapter;
    private DataBaseController db;
    private Tags tag = new Tags();
    private List<ItemData> itemData = new ArrayList<>();
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        textView = (TextView) findViewById(R.id.textViewAnim);
 
        db = new DataBaseController(this, tag.NAME_DB(), null, tag.VERSION_DB());
 
        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
 
        recyclerViewAdapter = new RecyclerViewAdapter(getItemData());
        recyclerView.setLayoutManager(linearLayoutManager);
 
        List<ItemDB> itemDBs = db.getAllItems();
        for (ItemDB it : itemDBs) {
            addData(it.getDbName(), it.getDbPrice(), it.getDbComment());
        }
 
        recyclerView.setAdapter(recyclerViewAdapter);
 
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }
 
    private void deleteDB() {
        db.deleteAll();
    }
 
    public void addData(String name, Double price, String category) {
        itemData.add(new ItemData(name, price, category));
    }
 
    public List<ItemData> getItemData() {
        return itemData;
    }
 
    @Override
    protected void onResume() {
        super.onResume();
        Log.i(tag.MAIN_ACTIVITY_TAG(), "onResume");
        recyclerViewAdapter.notifyDataSetChanged();
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_settings:
                deleteDB();
                Log.i(tag.MAIN_ACTIVITY_TAG(), "action settings");
                recyclerViewAdapter.notifyDataSetChanged();
                break;
        }
        return super.onOptionsItemSelected(item);
    }
 
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.fab:
                Intent intent = new Intent(this, InputActivity.class);
                startActivity(intent);
                break;
            case R.id.textViewAnim:
                Animation anim;
                anim = AnimationUtils.loadAnimation(this, R.anim.anim_alpha);
                textView.startAnimation(anim);
                break;
        }
    }
}
Yandex
Объявления
18.11.2015, 12:23     Обновление содержимого Recyclerview
Ответ Создать тему
Опции темы

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