Bonjour,

Voila j'ai un problème pour rafraîchir les données d'une Listview . Je fais pourtant les changements comme il se doit au niveau de l'ArrayAdapter en nettoyant et en ajoutant les objets de ma nouvelle liste à la liste courante de l'Adpater. Je ne vois vraiment pas où est l'erreur. D'avance merci pour votre aide.

SearchImageActivity.java

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
public class SearchImageActivity extends AbstractNavDrawerActivity {
 
    private ExportMenuRecherche mExportMenuRecherche;
    private ExportMenuCarthoteque mExportMenuCarthoteque;
 
    private String mQuery;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        handleIntent(getIntent());
    }
 
    @Override
    protected NavDrawerActivityConfiguration getNavDrawerConfiguration() {
 
 
 
        mExportMenuRecherche = ExportMenuRecherche.getInstance(this);
        mExportMenuCarthoteque = ExportMenuCarthoteque.getInstance(this);
 
        ArrayList<NavDrawerItem> menu = mExportMenuCarthoteque.exportMenu(getCarthoteque());
 
        NavDrawerActivityConfiguration navDrawerActivityConfiguration = new NavDrawerActivityConfiguration();
        navDrawerActivityConfiguration.setMainLayout(R.layout.activity_main);
        navDrawerActivityConfiguration.setDrawerLayoutId(R.id.drawer_layout);
        navDrawerActivityConfiguration.setLeftDrawerId(R.id.left_drawer);
        navDrawerActivityConfiguration.setNavItems(menu);
        navDrawerActivityConfiguration.setDrawerShadow(R.drawable.drawer_shadow);     
        navDrawerActivityConfiguration.setDrawerOpenDesc(R.string.drawer_open);
        navDrawerActivityConfiguration.setDrawerCloseDesc(R.string.drawer_close);
        navDrawerActivityConfiguration.setBaseAdapter(
            new NavDrawerAdapter(this, R.layout.navdrawer_item, menu ));
        return navDrawerActivityConfiguration;
    }
 
 
 
    @Override
    protected void onNewIntent(Intent intent) { 
        handleIntent(intent);
    }
 
    private void handleIntent(Intent intent) {
 
        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
            String query = intent.getStringExtra(SearchManager.QUERY);
 
            ArrayList<NavDrawerItem> menu = mExportMenuRecherche.exportMenu(getCarthoteque(), mQuery);
 
            NavDrawerActivityConfiguration navDrawerActivityConfiguration = getNavConf();
            navDrawerActivityConfiguration.setNavItems(menu);
            NavDrawerAdapter navDrawerAdapter = (NavDrawerAdapter) navDrawerActivityConfiguration.getBaseAdapter();
            navDrawerAdapter.setDataSource(menu);
        }
    }
}
Je précise que la méthode getNavDrawerConfiguration() est appelée dans les OnCreate() de la classe mère. C'est la qu'est instancié l'ArrayAdapter avec une première liste. Puis je souhaite la mettre à jour avec une nouvelle liste par la suite dans la méthode handleIntent.

NavDrawerAdapter.java

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
 
public class NavDrawerAdapter extends ArrayAdapter<NavDrawerItem> {
 
    private LayoutInflater inflater;
 
    public NavDrawerAdapter(Context context, int textViewResourceId, ArrayList<NavDrawerItem> objects) {
        super(context, textViewResourceId, objects);
        this.inflater = LayoutInflater.from(context);
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = null ;
        NavDrawerItem menuItem = getItem(position);
        if ( menuItem.getType() == NavMenuItem.ITEM_TYPE ) {
            view = getItemView(convertView, parent, menuItem );
        } else if(menuItem.getType() == NavDrawerHomeItem.ITEM_TYPE) {
            view = getHomeItemView(convertView, parent, menuItem );
        } else {
            view = getSectionView(convertView, parent, menuItem);
        }
        return view ;
    }
 
    public View getHomeItemView( View convertView, ViewGroup parentView, NavDrawerItem navDrawerItem ) {
 
        NavDrawerHomeItem navDrawerHomeItem =  (NavDrawerHomeItem) navDrawerItem ;
        NavHomeItemHolder navHomeItemHolder = null;
 
        if (convertView == null) {
            convertView = inflater.inflate( R.layout.navdrawer_home_item, parentView, false);
            TextView labelMainView = (TextView) convertView
                    .findViewById( R.id.text_main_name);
            TextView labelSubView = (TextView) convertView
                    .findViewById( R.id.sub_text_name);
            ImageView iconView = (ImageView) convertView
                    .findViewById( R.id.left_pic );
 
            navHomeItemHolder = new NavHomeItemHolder();
            navHomeItemHolder.labelView = labelMainView ;
            navHomeItemHolder.subLabelView = labelSubView;
            navHomeItemHolder.iconView = iconView ;
 
            convertView.setTag(navHomeItemHolder);
        }
 
        if ( navHomeItemHolder == null ) {
            navHomeItemHolder = (NavHomeItemHolder) convertView.getTag();
        }
 
        navHomeItemHolder.labelView.setText(navDrawerHomeItem.getLabelDepartement());
        navHomeItemHolder.subLabelView.setText(navDrawerHomeItem.getLabel());
        navHomeItemHolder.iconView.setImageResource(navDrawerHomeItem.getIcon());
 
        return convertView;
    }
 
    public View getItemView( View convertView, ViewGroup parentView, NavDrawerItem navDrawerItem ) {
 
        NavMenuItem menuItem = (NavMenuItem) navDrawerItem ;
        NavMenuItemHolder navMenuItemHolder = null;
 
        if (convertView == null) {
            convertView = inflater.inflate( R.layout.navdrawer_item, parentView, false);
            TextView labelView = (TextView) convertView
                    .findViewById( R.id.navmenuitem_label );
            ImageView iconView = (ImageView) convertView
                    .findViewById( R.id.navmenuitem_icon );
 
            navMenuItemHolder = new NavMenuItemHolder();
            navMenuItemHolder.labelView = labelView ;
            navMenuItemHolder.iconView = iconView ;
 
            convertView.setTag(navMenuItemHolder);
        }
 
        if ( navMenuItemHolder == null ) {
            navMenuItemHolder = (NavMenuItemHolder) convertView.getTag();
        }
 
        navMenuItemHolder.labelView.setText(menuItem.getLabel());
        navMenuItemHolder.iconView.setImageResource(menuItem.getIcon());
 
        return convertView ;
    }
 
    public View getSectionView(View convertView, ViewGroup parentView,
            NavDrawerItem navDrawerItem) {
 
        NavMenuSection menuSection = (NavMenuSection) navDrawerItem ;
        NavMenuSectionHolder navMenuItemHolder = null;
 
        if (convertView == null) {
            convertView = inflater.inflate( R.layout.navdrawer_section, parentView, false);
            TextView labelView = (TextView) convertView.findViewById( R.id.navmenusection_label );
 
            navMenuItemHolder = new NavMenuSectionHolder();
            navMenuItemHolder.labelView = labelView ;
            convertView.setTag(navMenuItemHolder);
        }
 
        if ( navMenuItemHolder == null ) {
            navMenuItemHolder = (NavMenuSectionHolder) convertView.getTag();
        }
 
        navMenuItemHolder.labelView.setText(menuSection.getLabel());
 
        return convertView ;
    }
 
    @Override
    public int getViewTypeCount() {
        return 3;
    }
 
    @Override
    public int getItemViewType(int position) {
        return this.getItem(position).getType();
    }
 
    @Override
    public boolean isEnabled(int position) {
        return getItem(position).isEnabled();
    }
 
    private static class NavHomeItemHolder {
        private TextView labelView;
        private TextView subLabelView;
        private ImageView iconView;
    }
 
    private static class NavMenuItemHolder {
        private TextView labelView;
        private ImageView iconView;
    }
 
    private class NavMenuSectionHolder {
        private TextView labelView;
    }
 
    public void setDataSource(ArrayList<NavDrawerItem> objects) {
 
        if (objects!= null){
 
              clear();
 
            for (NavDrawerItem dItem : objects) {
 
                insert(dItem, getCount());
            }
        }
 
        notifyDataSetChanged();
    }
}