ForumPostLoader теперь охватывает работу со всем форумом

This commit is contained in:
Victor 2014-01-10 16:14:34 +02:00
parent 023dc90874
commit 0c2915df6e
2 changed files with 33 additions and 21 deletions

View File

@ -11,7 +11,7 @@ import com.annimon.client.adapters.ForumPostAdapter;
import com.annimon.client.entities.ForumPost;
import com.annimon.client.entities.ForumSection;
import com.annimon.client.entities.ForumTopic;
import com.annimon.client.tasks.ForumPostLoader;
import com.annimon.client.tasks.ForumLoader;
public class ForumFragment extends ListFragment {
@ -19,11 +19,11 @@ public class ForumFragment extends ListFragment {
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
new ForumPostLoader<ForumSection>(getActivity(), sectionListener).execute();
new ForumLoader<ForumSection>(getActivity(), sectionListener).execute();
}
private final ForumPostLoader.FinishLoadingListener<ForumSection> sectionListener
= new ForumPostLoader.FinishLoadingListener<ForumSection>() {
private final ForumLoader.FinishLoadingListener<ForumSection> sectionListener
= new ForumLoader.FinishLoadingListener<ForumSection>() {
@Override
public void onLoadingFinished(List<ForumSection> items) {
@ -36,15 +36,15 @@ public class ForumFragment extends ListFragment {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Ãðóçèì ñïèñîê ïîñòîâ âûáðàííîé òåìû
ForumSection section = adapter.getItem(position);
new ForumPostLoader<ForumTopic>(getActivity(), topicListener).execute(
ForumPostLoader.MODE_TOPICS, section.getId());
new ForumLoader<ForumTopic>(getActivity(), topicListener).execute(
ForumLoader.MODE_TOPICS, section.getId());
}
});
}
};
private final ForumPostLoader.FinishLoadingListener<ForumTopic> topicListener
= new ForumPostLoader.FinishLoadingListener<ForumTopic>() {
private final ForumLoader.FinishLoadingListener<ForumTopic> topicListener
= new ForumLoader.FinishLoadingListener<ForumTopic>() {
@Override
public void onLoadingFinished(List<ForumTopic> items) {
@ -57,15 +57,15 @@ public class ForumFragment extends ListFragment {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Ãðóçèì ñïèñîê ïîñòîâ âûáðàííîé òåìû
ForumTopic topic = adapter.getItem(position);
new ForumPostLoader<ForumPost>(getActivity(), postListener).execute(
ForumPostLoader.MODE_POSTS, topic.getId());
new ForumLoader<ForumPost>(getActivity(), postListener).execute(
ForumLoader.MODE_POSTS, topic.getId());
}
});
}
};
private final ForumPostLoader.FinishLoadingListener<ForumPost> postListener
= new ForumPostLoader.FinishLoadingListener<ForumPost>() {
private final ForumLoader.FinishLoadingListener<ForumPost> postListener
= new ForumLoader.FinishLoadingListener<ForumPost>() {
@Override
public void onLoadingFinished(List<ForumPost> items) {

View File

@ -8,29 +8,41 @@ import android.os.AsyncTask;
import android.widget.ProgressBar;
import com.annimon.client.R;
import com.annimon.client.entities.ForumPost;
import com.annimon.client.utils.ApiUtils;
/**
*
* @author aNNiMON
*/
public class ForumPostLoader extends AsyncTask<Integer, Void, List<ForumPost>> {
public class ForumLoader<T> extends AsyncTask<Integer, Void, List<T>> {
public static final int LAST_POSTS = -110;
public static final int MODE_TOPICS = -120;
public static final int MODE_POSTS = -120;
private final Context mContext;
private final FinishLoadingListener mListener;
private final FinishLoadingListener<T> mListener;
private AlertDialog mDialog;
public ForumPostLoader(Context context, FinishLoadingListener listener) {
public ForumLoader(Context context, FinishLoadingListener<T> listener) {
mContext = context;
mListener = listener;
}
@Override
protected List<ForumPost> doInBackground(Integer... params) {
if (params[0] == LAST_POSTS) return ApiUtils.getLastPosts();
protected List<T> doInBackground(Integer... params) {
if (params.length == 0) {
// Ãðóçèì ñïèñîê ðàçäåëîâ
return (List<T>) ApiUtils.getForumSections(mContext);
}
if (params[0] == MODE_POSTS) {
int topicId = params[1];
if (topicId == LAST_POSTS) {
// Ñïèñîê íåïðî÷èòàííîãî
return (List<T>) ApiUtils.getLastPosts();
}
}
return null;
}
@ -50,13 +62,13 @@ public class ForumPostLoader extends AsyncTask<Integer, Void, List<ForumPost>> {
}
@Override
protected void onPostExecute(List<ForumPost> items) {
protected void onPostExecute(List<T> items) {
super.onPostExecute(items);
mListener.onLoadingFinished(items);
mDialog.dismiss();
}
public interface FinishLoadingListener {
void onLoadingFinished(List<ForumPost> items);
public interface FinishLoadingListener<T> {
void onLoadingFinished(List<T> items);
}
}