2016-04-15 3 views
0

Как я могу удалить ArrayList и сделать notifyDataSetChanged() в адаптере ListView из фрагмента?Clear ArrayList и do notifyDataSetChanged в адаптере ListView из фрагмента

Это мой код в ярлыке:

public class ConnectionsFragment { 
    public onClick() { 
     // do clear data and notify it (from ListView), how?! 
    } 

    private class ArrayAdapter extends BaseAdapter { 
     ArrayList<ConnectionsModel> data; 

     // constructor saves received data to `data` 
     // public view `getView()` displays it 
    } 
} 

И я хочу, чтобы сделать четкие данные и уведомлять я сделал это после того, как onClick() в классе фрагмента (или, если еще проще ясно ListView, пока я не прочитал новые данные из API - так что я хочу четкого ListView, когда я читал из API) ...

ответ

3

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

private ArrayList<ConnectionsModel> mData; 

public onClick() { 
    // do clear data and notify it (from ListView), how?! 
    clearData(); 
} 

public void clearData() { 
    mData.clear(); 
    // do something else here if you want. Like some kind of visual notification to the user 
    notifyDataSetChanged(); 
} 

если ваш метод OnClick в фрагменте, который создает адаптер (назовем его mAdapter в этом примере), то OnClick будет:

public onClick() { 
    // do clear data and notify it (from ListView), how?! 
    mAdapter.clearData(); 
} 
0

Если ваш метод getView() вытягивает из data ArrayList, вы должен иметь возможность позвонить data.clear();, а затем notifyDataSetChanged(); с вашего ArrayAdapter класс