public class Chat_List_Tab extends Fragment{
public List<Chat_list> list;
private ArrayList<String> arrayList;
private BaseAdapterActivity adt;
private RecyclerView recyclerView;
private LinearLayoutManager layoutManager;
public Chat_list chat_list;
private String room_name;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tab_list, container, false);
//ViewPager pager = (ViewPager)getActivity().findViewById(R.id.viewPager);
list = new ArrayList<>();
arrayList = new ArrayList<>();
adt = new BaseAdapterActivity(getActivity(), list, R.layout.tab_list);
recyclerView = (RecyclerView) view.findViewById(R.id.tab_recyclerview);
layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(adt);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
int num = sharedPreferences.getInt("list_size", 0);
Log.i("list-2", String.valueOf(list.size()));
Log.i("arrayList-2", String.valueOf(arrayList.size()));
for(int i = 0; i<num; i++)
{
chat_list = new Chat_list(sharedPreferences.getString("room_name"+i, null));
list.add(chat_list);
adt.notifyDataSetChanged();
}
return view;
}
@Override
public void onResume()
{
super.onResume();
if(add)
{
add_Room();
add = false;
}
}
public void add_Room()
{
try
{
if (name!= null && name != "")
{
room_name = name;
if(!list.contains(room_name))
{
try
{
chat_list = new Chat_list(room_name);
list.add(chat_list);
arrayList.add(room_name);
Log.i("list", String.valueOf(list.size()));
Log.i("arrayList", String.valueOf(arrayList.size()));
adt.notifyDataSetChanged();
}
catch (Exception e)
{
Log.i("Exception", e.toString());
e.printStackTrace();
}
}
}
else
{
Log.i("room_name", "NULL");
Toast.makeText(getActivity(), "NULL", Toast.LENGTH_SHORT).show();
}
}
catch (Exception e)
{
Log.i("add_Room", String.valueOf(name));
Log.i("add_Room ERROR", e.toString());
}
}
@Override
public void onPause() < -- 여기서 저장할 때 , list로 하는 것과 arrayList로 하는 것이 다른 결과를 만들어냅니다
{
super.onPause();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putInt("list_size", list.size());
for (int i = 0; i < list.size(); i++)
{
edit.putString("room_name"+i, list.get(i).toString());
}
edit.commit();
이런식으로 list 를 이용하여 앱을 실행시켰을때는, 값이 recyclerView에 추가가되거든요, 앱을 종료했다가 재 실행했을 경우에 말이에요,
그런데 이 부분을 arrayList로 바꿔서 만들면, 값이 추가가 되다가 앱을 재실행시키면 마지막에 추가한 값만 recyclerView에 추가가 되어있습니다;
왜 그런건지 모르겠습니다; 답변 부탁드립니다.
}
@Override
public void onDestroy()
{
super.onDestroy();
//chat_list_room = false;
}
}