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

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

Войти
Регистрация
Восстановить пароль
 
shulyakyarik
11 / 11 / 3
Регистрация: 28.03.2014
Сообщений: 156
#1

Пустой список после вызова adapter.notifyDataSetChanged - Программирование Android

16.12.2014, 14:16. Просмотров 755. Ответов 5
Метки нет (Все метки)

При создании все норм. Пропадает только после обновления

Фрагмент
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
Context context;
 
    View v;
    ListView listView;
    AnotherListAdapter adapter;
    List<String> list,list2;
 
    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
        context = getActivity();
        v = inflater.inflate(R.layout.all_frag,null);
        listView = (ListView)v.findViewById(R.id.listView);
        DBControl control = new DBControl(context);
        list = control.getDates();
        list2 = control.getData();
        adapter = new AnotherListAdapter(context,list,list2);
        listView.setAdapter(adapter);
        return v;
    }
 
    @Override
    public void setMenuVisibility(boolean menuVisible) {
        super.setMenuVisibility(menuVisible);
        if(menuVisible)
            update();
    }
 
    public void update(){
        DBControl control = new DBControl(context);
        list.clear();
        list2.clear();
        list = control.getDates();
        list2 = control.getData();
        adapter.notifyDataSetChanged();
        Log.wtf("","Update");
    }
Адаптер
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
public class AnotherListAdapter extends BaseAdapter {
 
    Context context;
    LayoutInflater inflater;
    List<String> list;
    List<String> list2;
 
    public AnotherListAdapter(Context context,List<String> list,List<String> list2){
        this.context = context;
        inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        this.list = list;
        this.list2 = list2;
    }
 
    @Override
    public int getCount() {
        return list.size();
    }
 
    @Override
    public Object getItem(int position) {
        return null;
    }
 
    @Override
    public long getItemId(int position) {
        return 0;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView==null)
            convertView = inflater.inflate(R.layout.another_adapter_item,null);
        try {
            TextView date = (TextView)convertView.findViewById(R.id.textView5);
            date.setText(list.get(position));
            TextView money = (TextView)convertView.findViewById(R.id.textView6);
            int money_int = 0;
            JSONArray jsonArray = new JSONArray(list2.get(position));
            for(int i = 0; i < jsonArray.length(); i++){
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                money_int += Integer.valueOf(jsonObject.getString("money"));
            }
            money.setText(money_int+"");
        } catch (JSONException e) {
            Log.wtf("", "AnotherFragAdapter json exception");
        }
        return convertView;
    }
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2014, 14:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Пустой список после вызова adapter.notifyDataSetChanged (Программирование Android):

Не работает notifyDataSetChanged() - Программирование Android
Доброе Утро тем кто проснулся и тем кто уже подтягивается постучать по пластмассовому другу. Вот код: @Override public...

Приложение падает после вызова finish - Программирование Android
Подскажите плз как. Такого я чес слово не ожидал, честно искал в сети не нашел. Даже не думал что будут проблемы. switch...

Как изменится стек после вызова активити другого приложения - Программирование Android
Если у меня есть 2 задачи(2 Task) и я из первой задачи вызову активити, которое находится в стеке второй задачи, то у меня то активити...

Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity - Программирование Android
Такая проблема:после вызова метода recreate() методы фрагментов onCreate() and onCreateView() вызываются, а он Resume() - нет! Но если...

После добавления рекламы в практически пустой проект размер файла 7,68 мегабайт - Программирование Android
После добавления рекламы в практически пустой проект (RelativeLayout+1Texview) размер файла 7,68 мегабайт. Написанная мною программа...

После создания нового проекта в Eclipse Android каталог src совершенно пустой - Программирование Android
Здравствуйте! После создания нового проекта в Eclipse Android каталог src совершенно пустой. Подскажите, пожалуйста, в чем дело.

5
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
16.12.2014, 14:23 #2
Цитата Сообщение от shulyakyarik Посмотреть сообщение
@Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; }
Вангую, что из-за этого.

Java
1
2
3
4
5
6
7
8
9
@Override
    public Object getItem(int position) {
        return list != null ? list.get(position) : null;
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
1
shulyakyarik
11 / 11 / 3
Регистрация: 28.03.2014
Сообщений: 156
16.12.2014, 14:30  [ТС] #3
YuraAAA, не помогло
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
16.12.2014, 14:35 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от shulyakyarik Посмотреть сообщение
list = control.getDates(); list2 = control.getData();
изменение ссылки на объект

Добавлено через 57 секунд
сделайте в адаптере метод

Java
1
2
3
4
public void setData(List<String> list) {
this. list = list;
notifyDataSetChanged();
}
и вызовите его
1
shulyakyarik
11 / 11 / 3
Регистрация: 28.03.2014
Сообщений: 156
16.12.2014, 14:46  [ТС] #5
YuraAAA, стесняюсь спросить, но это верный способ или есть получше?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void update(){
        DBControl control = new DBControl(context);
        int size = list.size();
        list.clear();
        list2.clear();
        List<String> list3,list4;
        list3 = control.getDates();
        list4 = control.getData();
        for(int i = 0; i<size;i++){
            list.add(list3.get(i));
            list2.add(list4.get(i));
        }
        adapter.notifyDataSetChanged();
        Log.wtf("","Update");
    }
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
16.12.2014, 14:53 #6
shulyakyarik, у меня такой вопросик, а зачем Вам 2 коллекции в адаптере? Не проще ли обернуть это в класс? Могу помочь
0
16.12.2014, 14:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2014, 14:53
Привет! Вот еще темы с ответами:

После вызова notifydataset() items в listview "моргают" - Программирование Android
столкнулся с такой проблемой, перерыл stackoverflow, ответа не нашел есть список listview, который показывает картинки, загружая их из...

RecyclerView Adapter - Программирование Android
Пример классического создания адаптера RecyclerView public class UserDialogRecyclerAdapter extends...

Свой Adapter в свой Adapter - Программирование Android
Здравствуйте! В общем вопрос такой: у меня должно получить список в списке. Как то так: 1 10$ картошка сникерс ...

Adapter selector selected - Программирование Android
Пишу свой адаптер для списка. Для строк использую свой XML (устанавливаю в getView). Как подложку строки использую селектор для эфекта...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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