Добавлена возможность сохранения состояния экранов перемещения по форуму
This commit is contained in:
parent
660ed19952
commit
8e303c5fe3
@ -2,11 +2,12 @@ package com.annimon.client.fragments;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.support.v4.app.Fragment;
|
||||||
|
import android.support.v4.app.FragmentManager;
|
||||||
import android.support.v4.app.ListFragment;
|
import android.support.v4.app.ListFragment;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.ArrayAdapter;
|
import com.annimon.client.R;
|
||||||
|
|
||||||
import com.annimon.client.adapters.ForumPostAdapter;
|
import com.annimon.client.adapters.ForumPostAdapter;
|
||||||
import com.annimon.client.adapters.ForumSectionAdapter;
|
import com.annimon.client.adapters.ForumSectionAdapter;
|
||||||
import com.annimon.client.adapters.ForumTopicAdapter;
|
import com.annimon.client.adapters.ForumTopicAdapter;
|
||||||
@ -17,11 +18,46 @@ import com.annimon.client.tasks.ForumLoader;
|
|||||||
|
|
||||||
public class ForumFragment extends ListFragment {
|
public class ForumFragment extends ListFragment {
|
||||||
|
|
||||||
|
private static final String PARAM_MODE = "mode";
|
||||||
|
private static final String PARAM_ID = "id";
|
||||||
|
|
||||||
|
private static final int MODE_TOPICS = 1;
|
||||||
|
private static final int MODE_POSTS = 2;
|
||||||
|
private static final int MODE_LAST_POSTS = 3;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityCreated(Bundle savedInstanceState) {
|
public void onActivityCreated(Bundle savedInstanceState) {
|
||||||
super.onActivityCreated(savedInstanceState);
|
super.onActivityCreated(savedInstanceState);
|
||||||
|
|
||||||
|
if (getArguments() == null) {
|
||||||
new ForumLoader<ForumSection>(getActivity(), sectionListener).execute();
|
new ForumLoader<ForumSection>(getActivity(), sectionListener).execute();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final int mode = getArguments().getInt(PARAM_MODE, MODE_LAST_POSTS);
|
||||||
|
final int id = getArguments().getInt(PARAM_ID, -1);
|
||||||
|
switch (mode) {
|
||||||
|
case MODE_TOPICS:
|
||||||
|
new ForumLoader<ForumTopic>(getActivity(), topicListener).execute(
|
||||||
|
ForumLoader.MODE_TOPICS, id);
|
||||||
|
break;
|
||||||
|
case MODE_POSTS:
|
||||||
|
new ForumLoader<ForumPost>(getActivity(), postListener).execute(
|
||||||
|
ForumLoader.MODE_POSTS, id);
|
||||||
|
break;
|
||||||
|
case MODE_LAST_POSTS:
|
||||||
|
new ForumLoader<ForumPost>(getActivity(), postListener).execute(
|
||||||
|
ForumLoader.LAST_POSTS);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void nextScreen(Bundle args) {
|
||||||
|
Fragment fragment = new ForumFragment();
|
||||||
|
fragment.setArguments(args);
|
||||||
|
|
||||||
|
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
|
||||||
|
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
private final ForumLoader.FinishLoadingListener<ForumSection> sectionListener
|
private final ForumLoader.FinishLoadingListener<ForumSection> sectionListener
|
||||||
@ -36,15 +72,16 @@ public class ForumFragment extends ListFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||||
ForumSection section = (ForumSection) adapter.getItem(position);
|
ForumSection section = (ForumSection) adapter.getItem(position);
|
||||||
|
Bundle args = new Bundle();
|
||||||
if (section.getId() == ForumLoader.LAST_POSTS) {
|
if (section.getId() == ForumLoader.LAST_POSTS) {
|
||||||
// Ãðóçèì ñïèñîê ïîñëåäíèõ ñîîáùåíèé
|
// Ãðóçèì ñïèñîê ïîñëåäíèõ ñîîáùåíèé
|
||||||
new ForumLoader<ForumPost>(getActivity(), postListener).execute(
|
args.putInt(PARAM_MODE, MODE_LAST_POSTS);
|
||||||
ForumLoader.LAST_POSTS);
|
|
||||||
} else {
|
} else {
|
||||||
// Ãðóçèì ñïèñîê òåì âûáðàííîãî ðàçäåëà
|
// Ãðóçèì ñïèñîê òåì âûáðàííîãî ðàçäåëà
|
||||||
new ForumLoader<ForumTopic>(getActivity(), topicListener).execute(
|
args.putInt(PARAM_MODE, MODE_TOPICS);
|
||||||
ForumLoader.MODE_TOPICS, section.getId());
|
args.putInt(PARAM_ID, section.getId());
|
||||||
}
|
}
|
||||||
|
nextScreen(args);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -63,8 +100,10 @@ public class ForumFragment extends ListFragment {
|
|||||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||||
// Ãðóçèì ñïèñîê ïîñòîâ âûáðàííîé òåìû
|
// Ãðóçèì ñïèñîê ïîñòîâ âûáðàííîé òåìû
|
||||||
ForumTopic topic = (ForumTopic) adapter.getItem(position);
|
ForumTopic topic = (ForumTopic) adapter.getItem(position);
|
||||||
new ForumLoader<ForumPost>(getActivity(), postListener).execute(
|
Bundle args = new Bundle();
|
||||||
ForumLoader.MODE_POSTS, topic.getId());
|
args.putInt(PARAM_MODE, MODE_POSTS);
|
||||||
|
args.putInt(PARAM_ID, topic.getId());
|
||||||
|
nextScreen(args);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user