адаптер массива.очистить() удаляет исходные данные
У меня возникла следующая проблема. У меня есть listview и две кнопки. В начале фрагмента некоторые данные хранятся в 2 Arraylists. Сначала содержимое первого Arraylist отображается в listview, который работает нормально. Когда пользователь нажимает первую кнопку, ListView показывает второй ArrayList. Что прекрасно работает для пользователя, но как только я вызываю адаптер.четкий(). Первые коллекции были удалены. Поэтому он не может вернуться к первому списку, нажав на первую кнопку. Я никогда удалите Arraylist, поэтому мне интересно, почему адаптер.clear() делает это. Любая помощь была бы очень кстати. Код внизу.
public class MessagesFragment extends Fragment {
private ArrayList<Message> outbound;
private ArrayList<Message> inbound;
private MessageAdapter messageadapter;
private int box;
private View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_messages, container,
false);
outbound = new ArrayList<Message>();
inbound = new ArrayList<Message>();
this.rootView = rootView;
box = 0;
messageadapter = new MessageAdapter(getActivity(),
R.layout.item_message, inbound);
((ListView) rootView.findViewById(R.id.lv_message))
.setAdapter(messageadapter);
initializeListeners();
return rootView;
}
private void initializeListeners() {
rootView.findViewById(R.id.rb_message_inbox).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
showBox(0);
}
});
rootView.findViewById(R.id.rb_message_outbox).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
showBox(1);
}
});
}
private void showBox(int box) {
messageadapter.clear();
switch (box) {
case 0:
messageadapter.addAll(inbound);
break;
case 1:
messageadapter.addAll(outbound);
break;
}
this.box = box;
messageadapter.notifyDataSetChanged();
}
}
Таким образом, в начале список заполняется входящим ArrayList. Но когда showbox (1) вызывается inbound, он удаляется сразу же, как messageadapter.clear() вызывается. iutbound будет показан, но с вызовом showbox (0) после этого входящий не будет, потому что он пустой.