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

View File

@ -8,29 +8,41 @@ import android.os.AsyncTask;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import com.annimon.client.R; import com.annimon.client.R;
import com.annimon.client.entities.ForumPost;
import com.annimon.client.utils.ApiUtils; import com.annimon.client.utils.ApiUtils;
/** /**
* *
* @author aNNiMON * @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 LAST_POSTS = -110;
public static final int MODE_TOPICS = -120;
public static final int MODE_POSTS = -120;
private final Context mContext; private final Context mContext;
private final FinishLoadingListener mListener; private final FinishLoadingListener<T> mListener;
private AlertDialog mDialog; private AlertDialog mDialog;
public ForumPostLoader(Context context, FinishLoadingListener listener) { public ForumLoader(Context context, FinishLoadingListener<T> listener) {
mContext = context; mContext = context;
mListener = listener; mListener = listener;
} }
@Override @Override
protected List<ForumPost> doInBackground(Integer... params) { protected List<T> doInBackground(Integer... params) {
if (params[0] == LAST_POSTS) return ApiUtils.getLastPosts(); 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; return null;
} }
@ -50,13 +62,13 @@ public class ForumPostLoader extends AsyncTask<Integer, Void, List<ForumPost>> {
} }
@Override @Override
protected void onPostExecute(List<ForumPost> items) { protected void onPostExecute(List<T> items) {
super.onPostExecute(items); super.onPostExecute(items);
mListener.onLoadingFinished(items); mListener.onLoadingFinished(items);
mDialog.dismiss(); mDialog.dismiss();
} }
public interface FinishLoadingListener { public interface FinishLoadingListener<T> {
void onLoadingFinished(List<ForumPost> items); void onLoadingFinished(List<T> items);
} }
} }