다음 문제가 있습니다. 목록보기와 두 개의 버튼이 있습니다. 단편의 시작 부분에서 일부 데이터는 2 명의 Arraylists에 저장됩니다. 처음에는 첫 번째 Arraylist의 내용이 잘 작동하는 listview에 표시됩니다. 첫 번째 버튼을 클릭하면 ListView에 두 번째 ArrayList가 표시됩니다. 어떤 사용자에게 잘 작동하지만 adapter.clear()를 호출하자마자. 첫 번째 Arraylist가 삭제되었습니다. 따라서 그는 첫 번째 버튼을 클릭하여 첫 번째 목록으로 돌아갈 수 없습니다. 나는 Arraylist를 삭제하지 않으므로 adapter.clear()가 왜 그런지 궁금합니다. 어떤 도움이라도 좋을 것입니다. 밑에 코드.arrayadapter.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)를 호출하면 빈 상태가됩니다.
감사합니다. 그러나이 값을 변경했을 때만 작동합니다. messageadapter = 새로운 MessageAdapter (getActivity() \t \t \t \t \t \t R.layout.item_message 새로운 ArrayList를 (수신)); –
Cheetah
반갑습니다. Java에서 참조 할 때주의하십시오. – traninho
고마워, 효과가 있었다. 문제는 명확한 방법 때문이었습니다. 그것은 호출 할 때마다 Arraylist를 지 웁니다. –