package com.cnblogs.android; import java.util.List; import com.cnblogs.android.adapter.RssCateListAdapter; import com.cnblogs.android.core.RssCateHelper; import com.cnblogs.android.core.RssListHelper; import com.cnblogs.android.dal.RssListDalHelper; import com.cnblogs.android.entity.RssCate; import com.cnblogs.android.entity.RssList; import com.cnblogs.android.utility.NetHelper; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.res.Resources; import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; /** * RSS�������ķ��� * * @author walkingp * */ public class RssCateActivity extends Activity { Resources res; ListView listview; Button rsscate_button_back; ProgressBar bodyProgressBar;// ����ListView���ؿ� ProgressBar topProgressBar;// ���ذ�ť ImageButton btn_add;//��� TextView txtNoData;// û������ private static final int DIALOG_ADD_RSS_URL = 0;// �����С private AlertDialog dialogAddRss;// �Ի��� private ProgressDialog progressDialog; EditText etUrl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.rss_cate_layout); res = this.getResources(); InitialData(); InitControl(); new PageTask().execute(); } /** * ��ʼ������ */ void InitialData() { } /** * ��ʼ���ؿؼ� */ private void InitControl() { // ���� rsscate_button_back = (Button) findViewById(R.id.rsscate_button_back); topProgressBar = (ProgressBar) findViewById(R.id.rss_progressBar); btn_add=(ImageButton)findViewById(R.id.btn_add); txtNoData = (TextView) findViewById(R.id.txtNoData); bodyProgressBar = (ProgressBar) findViewById(R.id.rssList_progressBar); rsscate_button_back.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { RssCateActivity.this.finish(); } }); listview = (ListView) findViewById(R.id.rss_cate_list); // �����ת listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { // ���粻���� if (!NetHelper.networkIsAvailable(getApplicationContext())) { Toast.makeText(getApplicationContext(), R.string.sys_network_error, Toast.LENGTH_SHORT) .show(); return; } TextView tvTitle = (TextView) (v .findViewById(R.id.rss_cate_title)); TextView tvId = (TextView) (v.findViewById(R.id.rss_cate_id)); int cateId = Integer.parseInt((String) tvId.getText()); String title = tvTitle.getText().toString(); Intent intent = new Intent(); intent.setClass(RssCateActivity.this, RssListActivity.class); Bundle bundle = new Bundle(); bundle.putInt("cateId", cateId); bundle.putString("title", title); intent.putExtras(bundle); startActivity(intent); } }); //����Զ��� btn_add.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { showDialog(DIALOG_ADD_RSS_URL); } }); } protected Dialog onCreateDialog(int dialogGuid){ Context context=RssCateActivity.this; AlertDialog.Builder builder=new AlertDialog.Builder(context); AlertDialog alertDialog=null; switch(dialogGuid){ case DIALOG_ADD_RSS_URL://���Rss LayoutInflater inflater = LayoutInflater.from(context); View layout = inflater.inflate(R.layout.dialog_add_rss, null); alertDialog=builder.setTitle(R.string.rss_add_url_manual) .setView(layout) .setPositiveButton(R.string.com_btn_save, new AddRssClickListener()) .setNeutralButton(R.string.com_btn_cancel, new AddRssClickListener()).create(); etUrl=(EditText)layout.findViewById(R.id.etUrl); dialogAddRss=alertDialog; break; } return alertDialog; } /** * ��Ӷ��� * @author walkingp * */ class AddRssClickListener implements android.content.DialogInterface.OnClickListener { @Override public void onClick(DialogInterface dialog, int which) { if(dialog==dialogAddRss){ switch(which){ case Dialog.BUTTON_POSITIVE://�������� String url=etUrl.getText().toString(); new RssTask(url).execute(); break; case Dialog.BUTTON_NEGATIVE://ȡ�� break; } } } } /** * �������� * @author Administrator * */ class RssTask extends AsyncTask<String, Integer, RssList>{ String url; public RssTask(String url){ this.url=url; } @Override protected RssList doInBackground(String... params) { RssList entity=RssListHelper.GetRssEntity(url); return entity; } @Override protected void onPostExecute(RssList result) { if(result==null){ Toast.makeText(getApplicationContext(), R.string.rss_invalid_url_tips, Toast.LENGTH_SHORT).show(); return; } RssListDalHelper helper = new RssListDalHelper(getApplicationContext()); boolean isRssed=helper.Exist(url); if(isRssed){ Toast.makeText(getApplicationContext(), R.string.rss_redupicate_tips, Toast.LENGTH_SHORT).show(); return; } if(url.toLowerCase().indexOf("cnblogs.com")>=0){ result.SetIsCnblogs(true); } progressDialog.dismiss(); try{ helper.Insert(result); Toast.makeText(getApplicationContext(), R.string.rss_succ, Toast.LENGTH_SHORT).show(); }catch(Exception ex){ Toast.makeText(getApplicationContext(), R.string.rss_fail, Toast.LENGTH_SHORT).show(); } } @Override protected void onPreExecute() { if(url.equals("")){ Toast.makeText(getApplicationContext(), R.string.sys_input_empty, Toast.LENGTH_SHORT).show(); return; } //��ʾProgressDialog progressDialog = ProgressDialog.show(RssCateActivity.this, "��Ӷ���", "���ڴ������У����Ժ�", true, false); } } /** * �������� * @author walkingp * */ public class PageTask extends AsyncTask<String, Integer, List<RssCate>> { @Override protected List<RssCate> doInBackground(String... params) { List<RssCate> listCate = RssCateHelper.GetRssCates(); return listCate; } @Override protected void onPostExecute(List<RssCate> result) { bodyProgressBar.setVisibility(View.GONE); topProgressBar.setVisibility(View.GONE); if (result == null || result.size() == 0) { txtNoData.setVisibility(View.VISIBLE); } else { RssCateListAdapter adapter = new RssCateListAdapter( getApplicationContext(), result, listview); listview.setAdapter(adapter); } } @Override protected void onPreExecute() { bodyProgressBar.setVisibility(View.VISIBLE); topProgressBar.setVisibility(View.VISIBLE); } } }