/**
*
*/
package com.example.fudanbbs;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import com.example.fudanbbs.RecommendBoardFragment.recommendBoardAsyncTask;
import android.app.Fragment;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
/**
* @author Joseph.Zhong
*
*/
public class AllBoardFragment extends Fragment {
private ArrayList<HashMap<String, String>> allboardlist;
private ArrayList<String[]> autohintlist, lastusedlist;
private View rootview;
private SearchView searchview;
private TextView textview;
private ListView autohintlistview, allboardslistview;
private ProgressDialog progressdialog;
private SimpleAdapter allboardadapter;
private String TAG = "##################"+this.getClass().getName();
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
// TODO Auto-generated method stub
if(null == rootview){
rootview = inflater.inflate(R.layout.allboardsfragement, container, false);
}
searchview = (SearchView) rootview.findViewById(R.id.searchView);
textview = (TextView) rootview.findViewById(R.id.lastusedhint);
autohintlistview = (ListView) rootview.findViewById(R.id.autohintlistView);
allboardslistview = (ListView) rootview.findViewById(R.id.allboardsListView);
progressdialog = new ProgressDialog(getActivity());
progressdialog.setMessage(getString(R.string.loadingboardlist));
progressdialog.setCancelable(false);
progressdialog.setCanceledOnTouchOutside(false);
progressdialog.setProgressStyle(progressdialog.STYLE_SPINNER);
AllBoardsAsyncTask task = new AllBoardsAsyncTask();
task.execute();
return rootview;
}
public class AllBoardsAsyncTask extends AsyncTask{
private class SortByLetter implements Comparator{
@Override
public int compare(Object lhs, Object rhs) {
// TODO Auto-generated method stub
HashMap <String, String> mapl = (HashMap<String, String>) lhs;
HashMap <String, String> mapr = (HashMap<String, String>) rhs;
String left = mapl.get("boardtitle");
String right = mapr.get("boardtitle");
return left.compareTo(right);
}
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
progressdialog.show();
if(null == allboardlist){
allboardlist = new ArrayList<HashMap<String, String>>();
}else{
allboardlist.clear();
}
Log.v(TAG, "onPreExecute");
}
@Override
protected void onPostExecute(Object result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
if(null != allboardlist){
Collections.sort(allboardlist, new SortByLetter());
}
allboardadapter = new SimpleAdapter(rootview.getContext(), allboardlist,
R.layout.allboard, new String[]{"boardtitle", "boarddesc"}, new int[]{R.id.boardtitle, R.id.boarddesc});
allboardslistview.setAdapter(allboardadapter);
allboardslistview.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent,
View view, int position, long id) {
// TODO Auto-generated method stub
TextView boardtitle = (TextView) view.findViewById(R.id.boardtitle);
String boardtitlestring = boardtitle.getText().toString().trim();
TextView boarddesc = (TextView) view.findViewById(R.id.boarddesc);
String boarddescstring = boardtitle.getText().toString().trim();
Intent intent = new Intent();
intent.setClassName(getActivity(), "com.example.fudanbbs.BoardActivity");
Bundle bundle = new Bundle();
String boardURL = "http://bbs.fudan.edu.cn/bbs/doc?board="+boardtitlestring.substring(1, boardtitlestring.length()-1);
bundle.putString("boardURL", boardURL);
bundle.putString("boardname", boarddescstring.substring(1, boarddescstring.length()-1));
intent.putExtras(bundle);
startActivity(intent);
}});
if(progressdialog.isShowing()){
progressdialog.dismiss();
}
Log.v(TAG, "onPostExecute");
}
@Override
protected Object doInBackground(Object... params) {
// TODO Auto-generated method stub
String url = "http://bbs.fudan.edu.cn/bbs/all";
try {
Document doc = Jsoup.connect(url).timeout(10000).get();
Elements boards = doc.getElementsByTag("brd ");
for(Element board: boards){
String[] string = new String[2];
string[0] = board.attr("title");
string[1] = board.attr("desc");
HashMap<String, String> map = new HashMap<String, String>();
map.put("boardtitle", "["+string[0]+"] ");
map.put("boarddesc", string[1]);
allboardlist.add(map);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
}