package org.carelife.creader.ui.fragment; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.carelife.creader.R; import org.carelife.creader.dao.RankData; import org.carelife.creader.dao.UrlHelper; import org.carelife.creader.db.BookDao; import org.carelife.creader.ui.activity.SearchResultList; import org.carelife.creader.util.ToastUtil; import org.carelife.creader.util.XmlUtil; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; public class SearchHotFragment extends Fragment { private ListView hotList = null; private List<String> hotBookList; private BookAdapter book_Adapter; private SharedPreferences sp; private Editor edit; private ToastUtil toast; private BookDao bookDao; private LinearLayout progressbar; public static SearchHotFragment newInstance() { SearchHotFragment f = new SearchHotFragment(); return f; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); sp = getActivity().getSharedPreferences("sogounovel", Context.MODE_PRIVATE); edit = sp.edit(); toast = ToastUtil.getInstance(getActivity()); bookDao = BookDao.getInstance(getActivity()); hotBookList = bookDao.getHotwords(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.searchhot, container, false); progressbar = (LinearLayout) v.findViewById(R.id.searchhot_progressbar); if (hotBookList == null) { hotBookList = new ArrayList<String>(); new GetDataTask().execute(); } else { progressbar.setVisibility(View.GONE); } book_Adapter = new BookAdapter(getActivity(), hotBookList); hotList = (ListView) v.findViewById(R.id.searchhot_list); hotList.setAdapter(book_Adapter); hotList.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> l, View v, int position, long id) { if (position >= hotBookList.size()) { toast.setText("��,���㣬�𼱰�"); return; } String query_word = hotBookList.get(position).toString().trim(); bookDao.insertHistory(query_word); try { query_word = URLEncoder.encode(query_word, "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } Intent intent = new Intent(getActivity(), SearchResultList.class); edit.putString("querystring", query_word); edit.commit(); startActivity(intent); } }); return v; } private class GetDataTask extends AsyncTask<Void, Void, HashMap<String, Object>> { @Override protected HashMap<String, Object> doInBackground(Void... params) { HashMap<String, Object> tmp_data = null; HashMap<String, Object> tmp_data2 = null; try { tmp_data = XmlUtil.getXML(UrlHelper.rankurl, UrlHelper.goto_data_search, "", 1); int count = 0; if (tmp_data != null) { count = Integer.parseInt((String) tmp_data.get("count")); } tmp_data2 = XmlUtil.getXML(UrlHelper.rankurl, UrlHelper.goto_data_search, "&length=" + count, 1); } catch (IOException e) { e.printStackTrace(); } return tmp_data2; } @Override protected void onPostExecute(HashMap<String, Object> data) { if (data == null) { progressbar.setVisibility(View.GONE); toast.setText("�ף��������粻���������Ժ����԰�..."); } else { @SuppressWarnings("unchecked") List<RankData> rankl = (List<RankData>) data.get("rankitem"); for (int i = 0; i < rankl.size(); i++) { hotBookList.add(rankl.get(i).getbookname()); } bookDao.insertHotword(hotBookList); progressbar.setVisibility(View.GONE); } super.onPostExecute(data); } } private class BookAdapter extends BaseAdapter { List<String> data_list; Context context; public BookAdapter(Context context, List<String> results) { this.data_list = results; this.context = context; } public int getCount() { return data_list.size(); } public Object getItem(int position) { return data_list.get(position); } public long getItemId(int position) { return position; } public View getView(final int position, View convertView, ViewGroup parent) { HolderView holder; if (convertView == null) { convertView = View.inflate(context, R.layout.searchhotitem, null); holder = new HolderView(); holder.title = (TextView) convertView .findViewById(R.id.searchhot_bookname); convertView.setTag(holder); } else { holder = (HolderView) convertView.getTag(); } if (null != data_list.get(position)) { holder.title.setText(data_list.get(position).toString().trim()); } return convertView; } private class HolderView { TextView title; } } }