MainActivity 코드입니다.
public class MainActivity extends AppCompatActivity implements OnColorButtonListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onColorClick(int color) {
Fragment fragment = null;
switch (color) {
case 0:
fragment = new RedFragment();
break;
case 1:
fragment = new BlueFragment();
break;
}
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_ex, fragment).commit();
}
}
RedFragment 코드입니다.
public class RedFragment extends Fragment implements FlowerAdapter.FlowerClickListener {
private SwipeRefreshLayout swipeContainer_red;
private RecyclerView mRecyclerView;
private RestManager mRestManager;
private FlowerAdapter mFlowerAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_red, null);
swipeContainer_red = (SwipeRefreshLayout) view.findViewById(R.id.swipeContainer_red);
swipeContainer_red.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
mRestManager = new RestManager();
Call<List<Flower>> listCall = mRestManager.getmFlowerApiService(getActivity()).getAllFlowers();
listCall.enqueue(new Callback<List<Flower>>() {
@Override
public void onResponse(Call<List<Flower>> call, Response<List<Flower>> response) {
if (response.isSuccessful()) {
mFlowerAdapter.clear();
List<Flower> flowerList = response.body();
for(int i =0; i<flowerList.size(); i++) {
Flower flower = flowerList.get(i);
mFlowerAdapter.addFlower(flower);
}
swipeContainer_red.setRefreshing(false);
}
}
@Override
public void onFailure(Call<List<Flower>> call, Throwable t) {
}
});
}
});
configViews(view);
return view;
}
private void configViews(View view) {
mRecyclerView = (RecyclerView) view.findViewById(R.id.rv_flower_red);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setRecycledViewPool(new RecyclerView.RecycledViewPool());
mRecyclerView.setLayoutManager(new GridLayoutManager(getActivity().getApplicationContext(), 3));
mFlowerAdapter = new FlowerAdapter(this);
mRecyclerView.setAdapter(mFlowerAdapter);
}
@Override
public void onClick(int position) {
}
}
버튼클릭과 관련된 RowFragment.java 입니다
public class RowFragment extends Fragment implements View.OnClickListener {
private OnColorButtonListener onColorButtonListener;
public RowFragment() {
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
onColorButtonListener = (OnColorButtonListener) context;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_row, container, false);
view.findViewById(R.id.v_red).setOnClickListener(this);
view.findViewById(R.id.v_blue).setOnClickListener(this);
return view;
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.v_red:
onColorButtonListener.onColorClick(0);
break;
case R.id.v_blue:
onColorButtonListener.onColorClick(1);
break;
}
거의 다 제대로 동작하는데 제가 원하는 것은 레드프래그먼트에서 데이터를 불러온 후에 다른 프래그먼트로 이동했다가 다시 레드프래그먼트로 돌아오더라도 새롭게 리셋되지 않고 그대로 레드 프래그먼트가 유지되는 것입니다. 지금은 제꺼 화면이
이렇습니다.
여기서 아래 노란 탭을 눌러서 동작하다가 빨간탭을 누른 후에 다시 노란탭으로 돌아오면 노란탭이 리셋되어있습니다. 어떻게 리셋되지 않게 할수있나요? 끌어서 새로고침 기능을 넣어서 그걸로면 새로고침되면 충분하기에 저렇게 자동으로 리셋되는 걸 막고싶습니다. 도와주시면 감사하겠습니다.
OnColorButtonListener 는 이렇습니다.
public interface OnColorButtonListener {
void onColorClick(int color);
}
혹시 필요한 정보 있으시다면 올리도록하겠습니다. 도와주세요..
해쉬코드에 올리고 오키에도 올렸지만 여기에도 올려봅니다.
제가 초보라 이런 쉬운 거 질문해서 죄송합니다.. 도와주세요.