2013-04-30 4 views
3

Я разрабатываю пусковую установку с двумя различными профилями: одна из них является основной, вторая - вторичной. Если я пойду в игровой магазин, а затем вернусь с помощью кнопки «назад», я приземлюсь на свой основной профиль, но там значки моего gridview (отображаются через адаптер) отображаются в двойном (если я устанавливаю два приложения из play store, возвращающийся с помощью кнопки «Назад», даст мне иконки 3 раза и т. д.).Как удалить сетку на Android?

Если я перезапущу свою основную деятельность в методе onresume, все будет хорошо, а мои значки не будут удвоены, или утроены, или нет. Но я не хочу перезапускать активность, я хочу только очистить gridview.

if((admin == true)){ 
     Intent intent = getIntent(); 
     finish(); 
     startActivity(intent);} 
+0

Вы попробуйте 'adpater.clear()' и 'adapter.notifyDataSetchanged()' или просто 'gridview.removeAllViews()'? – Pragnani

+0

@ Pragnani Вызов 'removeAllViews()' в 'GridView' вызывает исключение. – samosaris

ответ

0

Удалить элементы из адаптера GridView. Вы можете получить адаптер по телефону #getAdapter() Возможно, вам понадобится внедрить метод очистки в адаптер, если он не существует. Если адаптер удлиняется BaseAdapter, вам может потребоваться позвонить по телефону #notifyDataSetChanged()

8

У меня была такая же проблема. Самый простой способ сделать это:

gridview.setAdapter(null); 
+0

простое и быстрое решение, спасибо! – cubycode

+0

'setAdapter()' вызывает 'removeAllViewsInLayout()' – samosaris

2

вы можете поместить ваши данные будут загружены с GridView в список, а затем, когда вы хотите обновить GridView, просто используйте

list.clear(); 

затем перезагрузить обновленные данные в ваш список, снова установите адаптер. Ниже приведен код:

Я использую gridview для загрузки изображений из сети, загружаемых Asynctask, когда я хочу обновить эти образы, когда вернусь из настройки к своему фрагменту/активности, Я очищаю список, содержащий данные, и работа по заполнению выполняется в AsyncTas к.

public void onStart() { 
    super.onStart(); 
    list.clear(); 
    //setAdapter(null) is not useful here after testing. 
    SharedPreferences preferences= PreferenceManager.getDefaultSharedPreferences(getActivity()); 
    String sort_order=preferences.getString("pref_sortOrder","popular"); 
    ParseDataTask parseDataTask=new ParseDataTask(); 
    parseDataTask.execute(sort_order); 
    } 

надеюсь, что это помогает :)

Смежные вопросы