У меня есть два фрагмента FragmentA и FragmentB. Когда я нажимаю на элемент в FragmentB, он инициирует фрагментацию транзакций, несущую некоторые данные.Как обновить адаптер listview после изменения фрагмента
У FragmentA есть пользовательский адаптер списка, который необходимо изменить, когда есть некоторые данные из FragmentB.
Проблема в том, что это не изменилось.
здесь код в фрагменте А
public class CardsFragment extends ListFragment {
protected List<CardModel> list = new ArrayList<CardModel>();
protected ArrayAdapter<CardModel> adapter;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_cards, container,
false);
return rootView;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
adapter = new CardAdapter(getListView().getContext(),
list);
Bundle args = getArguments();
if (args != null) {
LoadCards(args.getString("key"), args.getString("keyId"));
}
else{
LoadAllCards();
}
}
private void LoadAllCards() {
/**
query the database code
**/
list.add(...);
if (getListView().getAdapter() == null) {
setListAdapter(adapter);
} else {
adapter.refill(list);
}
}
private void LoadCards(String key, String keyId) {
/**
query the database code
**/
list.add(...);
if (getListView().getAdapter() != null) {
adapter.refill(list);
}
}
/**
Refill function from adapter class
public void refill(List<CardModel> cards){
list.clear();
list.addAll(cards);
notifyDataSetChanged();
}
**/
}
Вы прокомментировали refill(), но это тот код, который я бы рекомендовал. – wwfloyd
Код Refill существует в другом классе CardAdapter.java! Я прокомментировал это с целью демонстрации! –