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

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

Войти
Регистрация
Восстановить пароль
 
motoroller
2 / 2 / 1
Регистрация: 01.05.2012
Сообщений: 116
#1

Изменить ListView - Android

22.05.2015, 18:41. Просмотров 292. Ответов 2
Метки нет (Все метки)

Есть ListView, которые задается при запуске приложения
Далее у меня создает запрос к серверу и получаю данные.

Скажите как мне теперь изменить некоторые значения в listView

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
package ru.animalface.app.adapter;
 
import ru.animalface.app.R;
import ru.animalface.app.model.NavDrawerItem;
 
import java.util.ArrayList;
 
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
 
public class NavDrawerListAdapter extends BaseAdapter {
    
    private Context context;
    private ArrayList<NavDrawerItem> navDrawerItems;
    
    public NavDrawerListAdapter(Context context, ArrayList<NavDrawerItem> navDrawerItems){
        this.context = context;
        this.navDrawerItems = navDrawerItems;
    }
 
    @Override
    public int getCount() {
        return navDrawerItems.size();
    }
 
    @Override
    public Object getItem(int position) {       
        return navDrawerItems.get(position);
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater mInflater = (LayoutInflater)
                    context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
 
            if(navDrawerItems.get(position).getStyle() == "general") {
                convertView = mInflater.inflate(R.layout.drawer_list_item, null);
            } else if(navDrawerItems.get(position).getStyle() == "contact") {
                convertView = mInflater.inflate(R.layout.drawer_list_item_contact, null);
            }
        }
 
        ImageView imgIcon = (ImageView) convertView.findViewById(R.id.icon);
        TextView txtTitle = (TextView) convertView.findViewById(R.id.title);
        TextView txtCount = (TextView) convertView.findViewById(R.id.counter);
         
        imgIcon.setImageResource(navDrawerItems.get(position).getIcon());
        txtTitle.setText(navDrawerItems.get(position).getTitle());
        
        // displaying count
        // check whether it set visible or not
        if(navDrawerItems.get(position).getCounterVisibility()){
            txtCount.setText(navDrawerItems.get(position).getCount());
        } else {
            // hide the counter view
            txtCount.setVisibility(View.GONE);
        }
 
        if(navDrawerItems.get(position).getStyle() == "contact") {
            imgIcon.setVisibility(View.GONE);
            txtTitle.setVisibility(View.GONE);
        }
 
        return convertView;
    }
 
}
Получаю данные через кастомный адаптер

что делаю после запроса в mainActivity

Java
1
2
3
4
5
6
7
8
9
10
11
12
navDrawerItems.remove(2);  - все работает и удалет нужную запись
 
// Поиск
navDrawerItems.add(new NavDrawerItem("general", navMenuTitles[1], navMenuIcons.getResourceId(1, -1), true, animals));
// Организации
navDrawerItems.add(new NavDrawerItem("general", navMenuTitles[2], navMenuIcons.getResourceId(2, -1), true, companies));
 
// Два предыдущих пунка меня уже есть они создаются при загрузке, поэтому  у меня получается только добавить новые, подскажите как можно обновить эти два пункта меню
 
 
// setting the nav drawer list adapter
DrawerList.setAdapter(adapter);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2015, 18:41     Изменить ListView
Посмотрите здесь:

Android Разноцветный ListView
Android HeaderView в ListView
Значения в ListView Android
Стиль ListView Android
Android Кастомизация ListView
Android Редактирование listview
Android Не обновляется ListView
ListView обновление Android
Android Изменить ListView
Android Кастомизация ListView
ListView изменить отображение строк Android
Изменить цвет у item-a в listView Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
22.05.2015, 18:58     Изменить ListView #2
Java
1
adapter.notifyDataSetChanged()
motoroller
2 / 2 / 1
Регистрация: 01.05.2012
Сообщений: 116
22.05.2015, 19:21  [ТС]     Изменить ListView #3
adapter.notifyDataSetChanged() - это понятно что надо адаптер обновить,
а как в самом адаптере изменить значение одной из items

Добавлено через 6 минут
Вот собственно решение нашел

Java
1
2
navDrawerItems.set(1, (new NavDrawerItem("general", navMenuTitles[1], navMenuIcons.getResourceId(1, -1), true, response.getString("animals"))));
navDrawerItems.set(2, (new NavDrawerItem("general", navMenuTitles[2], navMenuIcons.getResourceId(2, -1), true, response.getString("companies"))));
Но возникла следующая проблема, изначально при формировании пунктов меню они идут с картинками
Java
1
2
3
4
5
6
7
8
9
10
// load slide menu items
        navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
 
        // nav drawer icons from resources
        navMenuIcons = getResources().obtainTypedArray(R.array.nav_drawer_icons);
 
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
 
        navDrawerItems = new ArrayList<NavDrawerItem>();
Название и картинки я беру из ресурсов
Все отлично отображается, но когда я делаю Set почему-то изображение более не отображается, хотя текст обновляется без проблем

Добавлено через 15 минут
Спасибо решил, оказывается стояло

recycle
Yandex
Объявления
22.05.2015, 19:21     Изменить ListView
Ответ Создать тему
Опции темы

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