diff --git a/src/com/annimon/client/fragments/ForumFragment.java b/src/com/annimon/client/fragments/ForumFragment.java index 1d87824..8efd974 100644 --- a/src/com/annimon/client/fragments/ForumFragment.java +++ b/src/com/annimon/client/fragments/ForumFragment.java @@ -3,32 +3,73 @@ package com.annimon.client.fragments; import java.util.List; import android.os.Bundle; import android.support.v4.app.ListFragment; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; 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; public class ForumFragment extends ListFragment { - - private static final String URL = "http://annimon.com/rss/forumreader.php"; - - private ForumPostAdapter mAdapter; - + @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - update(); + new ForumPostLoader(getActivity(), sectionListener).execute(); } - private void update() { - new ForumPostLoader(getActivity(), new ForumPostLoader.FinishLoadingListener() { - - @Override - public void onLoadingFinished(List items) { - mAdapter = new ForumPostAdapter(getActivity(), items); - setListAdapter(mAdapter); - } - }).execute(URL); - } + private final ForumPostLoader.FinishLoadingListener sectionListener + = new ForumPostLoader.FinishLoadingListener() { + + @Override + public void onLoadingFinished(List items) { + final ArrayAdapter adapter = new ArrayAdapter( + getActivity(), android.R.layout.simple_list_item_1, items); + setListAdapter(adapter); + getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() { + + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + // Грузим список постов выбранной темы + ForumSection section = adapter.getItem(position); + new ForumPostLoader(getActivity(), topicListener).execute( + ForumPostLoader.MODE_TOPICS, section.getId()); + } + }); + } + }; + + private final ForumPostLoader.FinishLoadingListener topicListener + = new ForumPostLoader.FinishLoadingListener() { + + @Override + public void onLoadingFinished(List items) { + final ArrayAdapter adapter = new ArrayAdapter( + getActivity(), android.R.layout.simple_list_item_1, items); + setListAdapter(adapter); + getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() { + + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + // Грузим список постов выбранной темы + ForumTopic topic = adapter.getItem(position); + new ForumPostLoader(getActivity(), postListener).execute( + ForumPostLoader.MODE_POSTS, topic.getId()); + } + }); + } + }; + + private final ForumPostLoader.FinishLoadingListener postListener + = new ForumPostLoader.FinishLoadingListener() { + + @Override + public void onLoadingFinished(List items) { + setListAdapter(new ForumPostAdapter(getActivity(), items)); + } + }; }